はじめに
Ansible
と言えばPlaybook
を使った自動化ですが、ちょっとした確認のためにPlaybook
を作るのもなぁ・・・って時に使えるワンライナーのコマンドを書き留めていきます。
Ansibleコマンドオプション
よく使いそうなコマンドオプションのみ抜粋。
短縮形 | 完全名 | 説明 |
---|---|---|
-a | --args | モジュールへの引数。モジュール指定無しの場合はansibleコマンドへの引数指定 |
-b | --become | 権限昇格してコマンド実行するかの指定。パスワード入力が必要な場合、"-K"も必要 |
-i | --inventory | インベントリファイルの指定 |
-k | --ask-pass | SSH接続パスワードの要求 |
-K | --ask-become-pass | 特権昇格パスワードの要求 |
-m <モジュール名> | --module-name <モジュール名> | 実行するモジュール名の指定 |
-u <ユーザ名> | --user <ユーザ名> | 実行ユーザの指定 |
-v | --verbose | 詳細モードで実行 |
-vvv | なし | "-v"より詳細に表示 |
・その他コマンド詳細
https://docs.ansible.com/ansible/latest/cli/ansible.html
マジック変数
Ansible
コマンドをワンライナーで実行するだけなら使う機会が少ないですが、使ったほうが都合が良い場合もあるので記載しておきます。
Playbook
を作って実行する場合はFacts
で収集する各種変数を使用できますが、Ansible
コマンドをそのまま実行する場合はFacts
で収集する値を使用できないので、変数を使いたい場合はFacts
が無効の状態でも使用できる変数(マジック変数
)を使用する必要があります。
変数の使用方法はPlaybook
内での指定と同様、{{変数}}
で使用できます。
ワンライナーで実行する際に使用できる変数は以下で確認可能です。
ansible -i [inventory] all -b -a 'echo {{hostvars}}'
以下ワンライナーで使えそうな変数の抜粋。
マジック変数 | 説明 |
---|---|
inventory_hostname | ホストのインベントリ名(ドメイン含む) |
inventory_hostname_short | ホストのインベントリ名(ホスト名のみ) |
inventory_dir | インベントリファイルが存在するディレクトリパス |
inventory_file | インベントリファイルのパス |
group_name | ホストが所属するグループ名 |
hostvars | ホストに割り当てられた変数 |
詳しくは以下を参照。
イベントリファイルで使用できる変数
マジック変数
とは別にインベントリファイル
内で使用できる変数があるのでよく使いそうな変数のみ抜粋。
インベントリ変数 | 説明 |
---|---|
ansible_host | 接続ホスト名(インベントリホストと異なる名前を付けたい場合) |
ansible_port | デフォルト以外のポート番号に接続する場合の指定 |
ansible_user | ホストに接続する際に使用するユーザ名 |
ansible_password | ホストに接続する際に使用するパスワード |
ansible_become_password | 特権昇格する際に使用するパスワード |
詳しくは以下を参照。
ちなみに後述するワンライナーコマンド
はインベントリファイル
に以下の様な設定を行い、SSH接続パスワード、sudoパスワードの入力を省略しています。
尚、今回の方法の場合、パスワードがそのまま表示されるので、本番環境などでの使用は極力控えてください。
[hostname] ansible_password=[パスワード] ansible_become_password=[パスワード]
Ansibleワンライナーコマンド
普段使ったりしているコマンド一覧。
ansible -i [inventory] all -b -a 'date'
ansible -i [inventory] all -m shell -b -a 'cat /etc/hosts | grep 127.0.0.1'
ansible -i [inventory] all -m copy -b -a 'src=[管理対象サーバパス] dest=[Ansible実行サーバパス].{{inventory_hostname}}'
※all
はインベントリ内の全ホストを示す指定なので、環境に合わせてグループ指定等行って下さい。
おわりに
使えそうなワンライナーコマンド
を思いついたら随時更新していきます。