我创建了一个用于发布今天Ansible模块的推特机器人的故事
这篇文章是 Ansible 3 Advent Calendar 2019 第25天的文章。
我們這次創建了一個定期發推特的機器人,用於推送Ansible模塊的名稱,現在向您介紹一下。
Ansible模块介绍azure_rm_publicipaddress管理Azure公共IP地址支持的: 社区版本添加的: 2.1
Ansible模块介绍win_psmodule添加或删除Windows PowerShell模块支持社区版本添加:2.4https://t.co/Vc6w6j844n— matsumuratomonori (@ma2muratomonori) 2019年12月22日
Ansible模块介绍oneview_ethernet_network_info获取关于一个或多个OneView以太网网络的信息。supported_by: communityversion_added: 2.4https://t.co/5fJNdRZaaq — matsumuratomonori (@ma2muratomonori) December 22, 2019
Ansible模块介绍win_route 添加或删除静态路由 支持者:社区 版本添加:2.4
Ansible模块介绍script在将其传输至远程节点后,在远程节点上运行本地脚本supported_by: coreversion_added: 0.9https://t.co/TtWFWP07O0— matsumuratomonori (@ma2muratomonori) December 22, 2019
原型
今天的幸运Ansible模块 – 横地 (@akira6592) 2019年12月2日
今天非常想介绍一下模块的事情,还有愤怒的土豆@Ansible AWX 早日发布。(@angrypotato_jp) 2019年12月19日
代码库
GitHub上的python-tomo/twitter-ansible-bot
在这里已经包含了一个用于构建开发环境的Dockerfile,但实际的程序部分只有红框中的文件。

用法
-
- 注册Twitter API并发行应用程序密钥
-
- 将CircleCI与存储库进行协作
-
- 将应用程序密钥注册到CircleCI
- 在GitHub存储库中进行cron设置
1. 在Twitter API上注册并生成应用程序密钥。
请根据这个网站的信息参考注册步骤。
将CircleCI与代码仓库进行连接

3. 在CircleCI上注册应用程序密钥。


在GitHub仓库中进行cron的配置。
在 `twitter-ansible-bot/.circleci/config.yml` 文件中配置 cron 设置。红框中的部分是分别存放 cron 设置和代码的分支。
只要初期设置是每小时的25分钟,脚本就会被执行并放置在测试分支中。
由于最开始的设置中只有一个主分支(master branch),因此可以使用以下命令在 GitHub 存储库中创建测试分支(test branch)。
一旦创建了测试分支,cron将会被启用。
cd twitter-ansible-bot
git branch test
Git checkout test
git push origin test

只要在下面图像的红框部分进行的仓库push操作时,就会触发处理。如果在test分支上进行push操作时能立即执行推文,则说明设置成功。

改进的地方
错误处理不严格。
我写了以下的代码来获取模块信息,但没有编写当无法获取模块信息时的错误处理。
ansible-doc -l | awk '{print $1}' > list.txt
# Get total number of modules
total_number=$(cat list.txt | wc -l)
echo ${total_number}
# Set module number
module_number=$(echo $(($RANDOM % ${total_number})))
echo ${module_number}
# Set module name by random number
module=$(sed -n ${module_number}p list.txt)
echo ${module}
# Get module name
ansible-doc ${module} -j | jq ".${module}.doc.module" > module.txt
# Get short_description
ansible-doc ${module} -j | jq ".${module}.doc.short_description" > short_description.txt
# Get supported_by
ansible-doc ${module} -j | jq ".${module}.metadata.supported_by" > supported_by.txt
# Get version_added
ansible-doc ${module} -j | jq ".${module}.doc.version_added" > version_added.txt
我想把bash部分改成Python3。
由于作者的Python能力不足,部分使用了bash。希望将这些部分替换为Python3。
希望未来能够用AWS Lambda来替代。
我希望将来能够将这个只能在具备bash处理能力的CircleCI上运行的Python脚本,转移到AWS Lambda上,以取代目前由Python能力较低的作者开发的版本。
以下为参考链接。
Twitter API的注册(账号申请方法)与获得批准的步骤概述 ※截至2019年8月的信息 | Qiita