Ansible のラッキーモジュールを表示するPlaybook つくりました。 pic.twitter.com/X0fnAzFXoI
— よこち(yokochi) @ Ansible実践ガイド 第3版 (@akira6592) 2019年12月19日
■ はじめに
Ansible には 3,000 を超えるモジュールが標準で含まれています。
ここまで増えると「今日は何のモジュールを触ろうかな?今日のラッキーモジュールはなんだろう?」と気になりますよね。
この記事では、そんなときにぴったりで極めて実用的な Playbook をご紹介します。
※ ただし、結果に対して当方は何ら責任を負いません
- 動作環境
- Ansible 2.9.1
■ Playbook
ansible-doc
コマンドの -l
でモジュールの一覧が、-j
オプションで JSON 形式で表示されます(-j
はAnsible 2.9 からの機能)。
この結果を受け取って、from_json
フィルターで、Ansible のディクショナリにパースし、その結果をdict2items
フィルターでリストに変換します。
そのリストを、with_random_choice
にかけて、ランダムに1つのモジュールを選択します。
- hosts: localhost gather_facts: no connection: local tasks: - name: get module list command: "ansible-doc -l -j" changed_when: no register: result - name: do uranai debug: msg: - "今日のラッキーモジュールは・・・・" - "" - "" - " {{ item.key }} です!!" - "" - "" - "概要: {{ item.value }}" - "今すぐアクセス!! >> https://docs.ansible.com/ansible/latest/modules/{{ item.key }}_module.html" with_random_choice: "{{ result.stdout | from_json | dict2items }}" loop_control: label: "{{ item.key }}"
■ 実行例
実行例です。インベントリファイルは不要です。
$ ansible-playbook -i localhost, uranai.yml PLAY [localhost] **************************************************************************************************** TASK [get module list] ********************************************************************************************** ok: [localhost] TASK [do uranai] **************************************************************************************************** ok: [localhost] => (item=fortios_system_replacemsg_spam) => { "msg": [ "今日のラッキーモジュールは・・・・", "", "", " fortios_system_replacemsg_spam です!!", "", "", "概要: Replacement messages in Fortinet's FortiOS and FortiGate", "今すぐアクセス!! >> https://docs.ansible.com/ansible/latest/modules/fortios_system_replacemsg_spam_module.html" ] } PLAY RECAP ********************************************************************************************************** localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
ちなみに今日の私のラッキーモジュールは fortios_system_replacemsg_spam
でした。
fortios_*
モジュールは 400個以上もあるので、出現頻度は高いと思います。
もう一回くらいやってみましょう。
ok: [localhost] => (item=slxos_config) => { "msg": [ "今日のラッキーモジュールは・・・・", "", "", " slxos_config です!!", "", "", "概要: Manage Extreme Networks SLX-OS configuration sections", "今すぐアクセス!! >> https://docs.ansible.com/ansible/latest/modules/slxos_config_module.html" ] }
slxos_config
モジュールでした。ネットワークモジュールが続いて、なんだか嬉しいです。
よく考えたら、同じ日に実行したら同じ結果になるべきですかね。おいておきましょう・・。
■ さいごに
表示の仕方はもっといろいろカスタマイズできますし、組み合わせ次第でチャットツールに送ることもできます。ぜひご活用ください。