LoginSignup
3
3

More than 3 years have passed since last update.

今日のAnsibleモジュールをツイートするTwitter botを作った話

Last updated at Posted at 2019-12-24

こちらの記事は Ansible 3 Advent Calendar 2019 25日目の記事になります。

今回は定期的にAnsibleのモジュール名をTweetするボットを作成したので紹介します。

元ネタ

リポジトリ

python-tomo/twitter-ansible-bot | GitHub

開発環境を構築するためのDockerfileが含まれていますが実際のプログラム部分は赤枠のファイル のみです。

スクリーンショット 2019-12-24 21.11.40.png

使い方

  1. Twitter APIへ登録しアプリケーションキーを発行する
  2. CircleCIとリポジトリを連携させる
  3. CircleCIへアプリケーションキーを登録する
  4. GitHubリポジトリでcronの設定を行う

1. Twitter APIへ登録しアプリケーションキーを発行する

登録方法は こちらのサイト の情報を参考にします

2. CircleCIとリポジトリを連携させる

スクリーンショット 2019-12-23 20.47.15.png

3. CircleCIへアプリケーションキーを登録する

スクリーンショット 2019-12-23 20.39.44.png

スクリーンショット 2019-12-23 20.36.27.png

4. GitHubリポジトリでcronの設定を行う

twitter-ansible-bot/.circleci/config.yml でcronの設定を行います。赤枠の部分はそれぞれcronの設定とコードを配置するブランチになります。

初期設定だと毎時間25分になったらtestブランチに置かれたスクリプトが実行されます。

初期設定はmasterブランチしかないので以下のようなコマンドでtestブランチをGitHubリポジトリに作成します。

testブランチが作成された時点でcronが有効になります。

.circleci/config.yml
cd twitter-ansible-bot
git branch test
Git checkout test
git push origin test

スクリーンショット 2019-12-24 22.25.52.png

また下の画像の部分の赤枠の部分でリポジトリにpushがあった時点で処理が走る設定になっています。testブランチにpushした瞬間にTweetが実行されれば設定は成功です。

スクリーンショット 2019-12-25 1.31.31.png

改善点

エラー処理が甘い

モジュール情報を取得する処理を以下のように書いてますがモジュール情報が取得できない場合のエラー処理が書いてない

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に置き換えたい

作成者のPython力が低くbashが扱えるCircleCI上で動いてますが将来的にはAWS Lambdaに置き換えたい

参考リンク

Twitter API 登録 (アカウント申請方法) から承認されるまでの手順まとめ ※2019年8月時点の情報 | Qiita

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3