ゆるい感じのプログラムを書きたい。

プログラムの敷居を下げて、多くの人が開発出来るように色々書いていきます!

【インベントリー概要】構築方法 3章:ホストへの接続

5.動作用のイベントリーパラメーター

変数を設定して、Ansibleがリモートホストと対話する方法を制御します。

パラメータ 説明
ansible_connection ホストへの接続の種類
ansiblleの接続プラグインの名前を使用できます。
SSHプロトコルタイプは、smartssh、または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 この設定は、常にsftpscpおよびsshのデフォルトのコマンドラインに追加されます。
特定のホスト(またはグループ)にproxyCommandを設定するのに便利です。
ansible_sftp_extra_args この設定は、常にドフォルトのsftpコマンドラインに追加されます。
ansible_scp_extra_args この設定は、常にデフォルトのscpコマンドラインに追加されます
ansible_ssh_pipelining SSHパイプラインを使用するかどうかを決めます。
これにより、ansible.cfgpipelining設定を上書きできます。
ansible_ssh_executable この設定により、システムのsshを使用するデフォルトの動作が上書きされます。
これにより、ansible.cfgssh_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 rubyperlなどのあらゆるもので動作し、ansible_pyton_interpreter と同じように機能します。
これは、ホストで実行するモジューつのシバンに代わるものです。

New in version2.1

パラメータ 説明
ansible_shell_executable ansibleコントローラがターゲットマシンで使用するシェルを設定し、ansible.cfgexecutableを上書きします。
このデフォルトは /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 Vault を試す - Qiita

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 }}



参考サイト