[Ansible] debugモジュール – 実行中のステートメントを表示する

debugモジュールを使うと、実行中のステートメントを表示できる。

参考サイト

ansible.builtin.debug module – Print statements during execution — Ansible Documentation
https://docs.ansible.com/ansible/latest/collections/ansible/builtin/debug_module.html

Ansible モジュール debug – Qiita
https://qiita.com/CsFactoryitter/items/6f1b5464b7a44b5e0c13

[Ansible] registerモジュール – コマンドの結果を変数として登録する

registerモジュールを使うと、コマンドの結果を変数として登録できる。

結果はモジュールごとに異なるので、各モジュールのドキュメントのRETURNセクションを参照。

参考サイト

変数の使用 — Ansible Documentation
https://docs.ansible.com/ansible/2.9_ja/user_guide/playbooks_variables.html?highlight=register

Return Values — Ansible Documentation
https://docs.ansible.com/ansible/latest/reference_appendices/common_return_values.html

Ansibleで実行結果の値を使って処理を変えたい〜registerの使い方〜 – Qiita
https://qiita.com/atsushi586/items/a591f1c6dee66773aaeb

[Ansible] ローカルで実行するには

プレイブックのtargetsセクションにはhostsの記述が必須だけど、ローカルで実行したい場合にはどうしたらいいか。

プレイの全てのタスクをローカルで実行したい場合

hosts: localhost と指定する。

プレイ内の特定のタスクだけをローカルで実行したい場合

delegate_toを指定する。

複数タスクをローカルで実行したい場合

タスクごとにdelegate_toを指定するか、以下のようにblockで括る。

参考サイト

Ansibleのローカル実行 – Qiita
https://qiita.com/hiroyuki_onodera/items/e6d0d308eb44e26fa03f

[Ansible] インベントリの書き方

基本的な書き方

子グループの定義

よく使いそうなAnsible変数

  • ansible_host: IPアドレス
  • ansible_user: ログインユーザー名
  • ansible_password: ログインパスワード
  • ansible_ssh_private_key_file: 秘密鍵のパス
  • ansible_python_interpreter: Pythonのパス
  • ansible_port: ポート番号

参考サイト

インベントリーの基本|Ansible の使い方
https://zenn.dev/y_mrok/books/ansible-no-tsukaikata/viewer/chapter5

[Ansible] YAMLの基本

AnsibleといえばYAMLなので、参考サイトからYAMLの基本を頭に入れる。

基本ルール

  • — から書き始める = 1 行目は — だけにする
  • … で書き終える = 最終行は … だけにする
  • # から行末までがコメントになる
  • インデントは半角空白 × 2 個で記述する(タブ文字は使用できない)
  • インデントでデータ構造のネストを表現する

データの基本的な表現

リスト

シーケンスとも呼ばれる。

マッピング

“キー:値”。ハッシュ、ディクショナリーとも呼ばれる。

複雑なデータの表現

マッピングの中にマッピングをネスト

シーケンスの中にマッピングをネスト

マッピングの中にシーケンスをネスト

複雑なネスト

参考サイト

YAML|Ansible の使い方
https://zenn.dev/y_mrok/books/ansible-no-tsukaikata/viewer/chapter3
↑Ansibleの基本理解に役立つ無料で読める本。著者に感謝。

[Ansible] -eオプションでansible_python_interpreterを指定する

EC2(Amazon Linux 2)にAnsibleをインストールしてアドホックコマンドを実行したら、Python絡みの警告が表示された。

Ansibleのバージョンを表示すると、Python 2.7.18が連携している模様。

公式サイトの Python 3 サポート ページを見ると以下の記述がある。

  • Ansible は Python バージョン 3.5 以降でのみ動作します。
  • Ansible は、多数のプラットフォームに同梱されている Python 3 を自動的に検出して使用します。

Amazonのリポジトリからインストールしたのだけど、Python 3の自動検知が上手くいかずにPython 2が使われているのかなあ。

-eオプションを使って明示的にPythonモジュールを指定したら警告は消えたけど、

根本的な原因究明は後回し。

参考サイト

Python 3 サポート — Ansible Documentation
https://docs.ansible.com/ansible/2.9_ja/reference_appendices/python_3_support.html

ansible — Ansible Documentation
https://docs.ansible.com/ansible/2.9_ja/cli/ansible.html#ansible

[Ansible] Amazon Linux 2にAnsibleをインストールする

環境確認。

amazon-linux-extraがインストールされていることを確認。

amazon-linux-extraでansibleが使用可能であることを確認。

Ansibleを有効にする。

Ansibleをインストールする。

これで完了。

参考サイト

Amazon Linux2にAnisbleをインストールする方法 – Qiita
https://qiita.com/1_ta/items/92dcfa6fa2a33cb11442

[Ansible] -oオプションで出力を1行にまとめる

-oオプションを指定すると、出力を1行にまとめることができる。

とりわけ複数マシンをターゲットに操作する場合には重宝する。

見やすい。

[Ansible] ざっくり入門

Ansibleを使う必要が出てきたので、参考書を読んでざっくり入門する。

Ansibleの概要

  • オープンソースの自動化のためのソフトウェア
  • 2012年に初版リリース
  • 2015年にAnsible Inc.がRed Hat Inc.に買収された
  • コミュニティ版とエンタープライズ版がある

Ansibleの特徴

  • 指示をプレイブックと呼ばれるテキストファイルに記述
  • 様々な対象をコントロール可能
  • エージェントが不要

Ansibleのインストール

環境はWSL上のCentOS 7。

Ansibleを構成するもの

  • プレイブック: 指示を記述したファイル
  • インベントリ: プレイブックを実行する対象
  • クレデンシャル: 実行対象へログインするための認証情報
  • 変数: プレイブック内で変数化された項目に値を与える
  • モジュール: 作業を部品化したもの

アドホックコマンドを試す

モジュールを単体で呼び出して使用するコマンドをアドホック(AdHoc)コマンドと呼ぶ。

インベントリを定義する

webグループのマシンに対して実行する場合

appグループのマシンに対して実行する場合

dbグループのマシンに対して実行する場合

クレデンシャルを指定する

ターゲットマシンにSSH接続する場合

参考書

Software Design – Dec. 2018
第1特集 [超速]入門 Ansible