【インベントリー概要】構築方法 3章:ホストへの接続
5.動作用のイベントリーパラメーター
変数を設定して、Ansibleがリモートホストと対話する方法を制御します。
パラメータ | 説明 |
---|---|
ansible_connection | ホストへの接続の種類 ansiblleの接続プラグインの名前を使用できます。 SSHプロトコルタイプは、 smart 、ssh 、またはparamiko です。デフォルトは smart です。 |
ansible_host | 接続するホストの名前(割り当てたいエイリアスと異なる場合) |
ansible_port | デフォルトではない場合(sshの場合は22)は、接続ポート番号 |
ansible_user | ホストに接続する際に使用するユーザ名 |
ansibl_pasword | ホストへの認証に使用するパスワード (この変数をプレーンテキストで保存しないでください。常にVaultを使用してください。) |
SSH接続の固有キーのパラメーター
パラメータ | 説明 |
---|---|
ansible_ssh_private_key_file | sshが使用する秘密鍵 複数のキーを使用し、SSHエージェントを使用しない場合に便利 |
ansible_ssh_common_args | この設定は、常にsftp 、scp およびssh のデフォルトのコマンドラインに追加されます。特定のホスト(またはグループ)に proxyCommand を設定するのに便利です。 |
ansible_sftp_extra_args | この設定は、常にドフォルトのsftp コマンドラインに追加されます。 |
ansible_scp_extra_args | この設定は、常にデフォルトのscp コマンドラインに追加されます |
ansible_ssh_pipelining | SSHパイプラインを使用するかどうかを決めます。 これにより、 ansible.cfg のpipelining 設定を上書きできます。 |
ansible_ssh_executable | この設定により、システムのssh を使用するデフォルトの動作が上書きされます。これにより、 ansible.cfg のssh_executable 設定を上書きできます。 |
権限の昇格 詳細はこちら
パラメータ | 説明 |
---|---|
ansible_become | ansible_sudo またはansible_su と同等です。これにより、権限のエスカレーションが強制できます。 |
ansible_become_method | 権限昇格メソッドの設定を許可します。 |
ansible_become_user | ansible_sudo_user またはansible_su_user と同等で、権限の昇格でユーザーを設定できます。 |
ansible_become_password | ansible_sudo またはansible_su と同等で、権限昇格パスワードを設定できます。(この変数をプレーンテキストで保存しないでください。常にVaultを使用してください。) |
ansible_become_exe | ansible_sudo またはansible_su と同等で、選択した昇格メソッドの実行ファイルを設定できます。 |
ansible_become_flags | ansible_sudo_flags またはansible_su_flags と同等で、選択した昇格メソッドに渡すフラグを設定出来ます。これは、 sudo_flags オプションのabsible.cfg でグローバルに設定することも出来ます。 |
リモートホスト環境パラメーター
パラメータ | 説明 |
---|---|
ansible_shell_type | ターゲットシステムのシェルタイプ ansible_shell_executableを非Bourme(sh)しない限り、この設定は使用しないでください デフォルトコマンドは sh スタイルの構文を使用してフォーマットこれを csh またはfish に設定すると、ターゲットシステムで実行差sれるコマンドがシェル構文に従います。 |
ansible_python_interpreter | ターゲットホストのPythonパス これは、複数のPythonがあるシステム、またはBSDなどの /usr/bin/python にないシステム、または /usr/bin/python が2.XシリーズのPython以外のシステムに役に立ちます。 /usr/bin/env メカニズムを使用しません。 リモートユーザーのパスを正しく設定する必要があり、また python 実行ファイルの名前がpythonであることを前提としています。 python2.6*のようになります。 |
ansible*interpreter | rubyやperlなどのあらゆるもので動作し、ansible_pyton_interpreter と同じように機能します。 これは、ホストで実行するモジューつのシバンに代わるものです。 |
New in version2.1
パラメータ | 説明 |
---|---|
ansible_shell_executable | ansibleコントローラがターゲットマシンで使用するシェルを設定し、ansible.cfg のexecutable を上書きします。このデフォルトは /bin/sh です /bin/shを使用できない場合(つまり /bin/sh がターゲットマシンにインストールされず、sudoから実行できない場合)に限り変更してください。 |
Ansibile-INIホストファイルの例
some_host ansible_port=2222 ansible_user=manager aws_host ansible_ssh_private_key_file=/home/example/.ssh/aws.pem freebsd_host ansible_python_interpreter=/usr/local/bin/python ruby_module_host ansible_ruby_interpreter=/usr/bin/ruby.1.9.3
5−1.SSH以外の接続タイプ
ホスト固有のパラメータansible_connection=<connector>
を使用すると、接続タイプを変更できます。
以下のパラメーターは、このコネクターより処理されます。
パラメータ | 説明 |
---|---|
local | このコネクターは、Playbookをコントロールマシン自体にデプロイするために使用できます。 |
docker | このコネクターは、ローカルのDockerクライアントを使用してPlaybokを直接Dokcerコンテナにデプロイします。 |
ansible_host | 接続先のDockerコンテナの名前 |
ansibel_user | コンテナ内で動作するユーザ名 ユーザーはコンテナ内に存在している必要があります。 |
ansible_become | true に設定すると、become_user はコンテナ内で動作するために使用されます |
ansible_docker_extra_args | Dockerが認識する追加の引数を持つ文字列を指定できますが、これはコマンド固有ではありません。 このパラメーターは、主に、使用するDockerデーモンを設定するために使用されます |
以下は、作成されたコンテナに即時にデプロイする例を示しています。
- name: create jenkins container docker_container: docker_host: myserver.net:4243 name: my_jenkins image: jenkins - name: add container to inventory add_host: name: my_jenkins ansible_connection: docker ansible_docker_extra_args: "--tlsverify --tlscacert=/path/to/ca.pem --tlscert=/path/to/client-cert.pem --tlskey=/path/to/client-key.pem -H=tcp://myserver.net:4243" ansible_user: jenkins changed_when: false - name: create directory for ssh keys delegate_to: my_jenkins file: path: "/var/jenkins_home/.ssh/jupiter" state: directory
利用可能なプラグインとサンプルの一覧は、プラグイン一覧を参照してください。
vault
Ansibleでパスワードなどの機密情報を暗号化して管理する | akamist blog
ansible-playbook -i hosts site.yml --ask-vault-pass
--ask-vault-pass
でプロンプトを表示させるか
--vault-password-file=VAULT_PASSWORD_FILE
でパスワードの書かれたファイルを指定します。
--ask-vault-pass
を付けて、ansible-playbook
コマンドを実行すると
Valut password
との入力が求められるので、暗号化した時のパスワードを入力すると復号化が可能
playbook1.yml
- hosts: group1 remote_user: root tasks: - name: ls command: ls become: yes register: result_ls - name: result_ls debug: msg: "{{ result_ls.stdout }}"
項目 | 説明 |
---|---|
hosts | 実行対象のグループやホスト名を指定 |
tasks | 実行するタスクを実行順に記述 |
name | 実行するタスク名を指定(コメントみたいに何を記載しても大丈夫) |
command | 指定したOSコマンドを実行するモジュール |
become | 権限昇格をアクティブにするにはyesに設定 |
register | モジュールの結果を記載した変数名に格納するように指定 |
debug | msgで指定した文字列を出力するモジュール |
コマンド実行
ansible-playbook -i hosts playbook1.yml
実行先のホスト及びユーザ
hosts
hostsはコロンで区切られた1つ以上のグループまたは ホストパターンのリストです。
- hosts: webserver
remote_user
remote_userは、ユーザアカウントの名前
remote_user: root
becomeの使用
権限昇格の理解: become — Ansible Documentation
playレベルまたはtaskレベルでbecome
を制御するディレクティブを設定できます。
接続変数をホストに設定すると、その変数を上書きできます。
これは多くの場合は、ホスト間で異なります。
これらの変数とディレクティブは独立しています。
become_userを設定するとbecomeに設定されません。
become 権限昇格をアクティブにするには
yes
に設定become_user 希望する権限を持つユーザに設定
ログインしたユーザではなく、becomeを行ったユーザ名になります。
ホストレベルで設定できるbecome:yes
を意味しているわけではありません。
デフォルトはroot
になります。become_method playレベル、taskレベル
ansible.cfgに設定されたデフォルトのメソッドをオーバーライドして、
becomeプラグインを使用するよう設定しまします。become_flags playレベル、taskレベル タスクまたはロールの特定フラグを使用できます。
シェルにno loginを設定する場合は、ユーザをnobodyに変更するのが一般的な方法。
Ansible2.2で追加
使用例
root
以外のユーザとして接続する際にシステム・サービスを管理
become_user(root)がデフォルトで使用できます。
- name: Ensure the httpd service is running
service:
name: httpd
state: started
become: yes
apache
ユーザとしてコマンド実行するには、次を実行します。
- name: Run a command as the apache user
command: somecommand
become: yes
become_user: apache
シェルがnologingの場合にnobody
ユーザとして操作を行う場合は、次を実行します。
- name: Run a command as nobody
command: somecommand
become: yes
become_method: su
become_user: nobody
become_flags: '-s /bin/sh'
sudoのパスワードを指定する必要がある場合
ansible-playbook
に--ask-become-pass
または-K
を付けて実行します。
become
を使用してPlaybookを実行し、
Playbookがハングしているように見える場合は、
おそらく権限昇格のプロンプトでスタックしており、Control-Cを使用して停止できます。
これにより、適切なパスワードを追加してPlaybookを再実行できます。
タスクリスト
各プレイには宅リストが含まれる。
タスクは、次のタスクに進む前に、ホスト「ターンに一致するすべてのマシンに対して、
一度に1つす順番に実行されます。
Ansible実行時の詳細ログを出力
Ansibleの実行時、以下のように-vvv
を引数に追加
詳細な情報が表示されます。
Playbookの実行が失敗する場合、この引数を追加し実行を行い、原因特定を行う。
ansible-playbook -i hosts hoge.yml -vvv
指定された文字列をそのまま画面表示を行う「debug」
debugモジュールは引数msg
に指定された文字列をそのまま画面に表示
tasks: - debug: msg="文字列を入力すると表示されます。"
変数の場合は以下の通り
vars: debug_msg: message tasks: - debug: {{ debug_msg }}
参考サイト
- Playbook実行後の戻り値 【公式】Playbookの概要