-プロビジョニングツール

#contents

*インストール前に [#m389e3bc]

コントロールされる側に以下のパッケージが必要。

python-simplejson

*Install [#a1ef0832]

Pythonのパッケージ管理であるpipを使うと楽。EPEL から yum でもインストール可能。
-Pythonのパッケージ管理であるpipを使うと楽。python-develとgccが必要。

 yum install python27-devel
 pip-2.7 install ansible


-EPEL から yum でもインストール可能。

 yum install ansible --enablerepo=epel

*文法チェック [#lcd9b61e]
*インベントリ(操作対象ホスト) [#b06e7a3f]

 # local
 localhost ansible_connection=local
 # SSHポート 10022でユーザーはremote_user
 remote.example.com  ansible_ssh_port=10022  ansible_ssh_user=remote_user ansible_ssh_private_key_file=~/.ssh/KEY_FILE  ansible_ssh_host=192.168.1.50


**パラメータ [#ff63884d]

|ansible_ssh_host|ホスト名に対しての実IP|
|ansible_ssh_port|SSHポート|
|ansible_ssh_user|SSHユーザ|
|ansible_ssh_pass|SSHパスワード。べた書きは非推奨なので--ask-passオプションを付けて実施するか公開鍵認証推奨|
|ansible_sudo|sudoを使うかどうか。デフォルトはfalse|
|ansible_sudo_pass|sudo のパスワード。危険なので--ask-sudo-passオプションを推奨)|
|ansible_sudo_exe (new in version 1.8)|sudo コマンドへのパス|
|ansible_connection|local, ssh or paramiko. |
|ansible_ssh_private_key_file|秘密鍵ファイルの場所|
|ansible_shell_type|シェル|
|ansible_python_interpreter|ログイン側のpython|
|ansible\_\*\_interpreter|ansibleのインタープリタの場所|

*文法チェックと空実行(dry run) [#lcd9b61e]

-文法チェック

 ansible-playbook -i hosts simple-playbook.yml --syntax-check

-空実行(dry run)

 ansible-playbook -i hosts simple-playbook.yml -C


*Playbook [#a57e2726]

 - hosts: all
   user: hoge
   tasks:
     - script: /home/hoge/test.sh

*モジュール [#oe3c52a8]
**httpd,openjdkインストール(分割推奨) [#i7e16019]

 - hosts: web03
   user: ec2-user
   tasks:
     - name: Install httpd
       yum: name=httpd state=latest
       sudo: yes
     - name: apacheが起動していることを確認
       action: service name=httpd state=started
       sudo: yes
     - name: "設定の修正(1)"
       lineinfile: >-
         dest='/etc/httpd/conf/httpd.conf'
         state=present
         backrefs=yes
         regexp='^#?\s*ServerTokens'
         line='ServerTokens Prod'
       sudo: yes
       notify: apache restart
     - name: Install openJDK
       yum: name=java-1.8.0-openjdk-devel state=latest
       sudo: yes
   handlers:
     - name: apache restart
       service:
         name=httpd
         state=restarted
       sudo: yes
*Taskモジュール [#oe3c52a8]

**Command Module [#da755925]

リモートでOSコマンドを実施する。

 # Example from Ansible Playbooks.
 - command: /sbin/shutdown -t now
 
 # createsに指定されたファイルがない場合はcommandの処理を実行
 - command: /usr/bin/make_database.sh arg1 arg2 creates=/path/to/database

 # somedir以下に移動し、かつ
 # createsに指定されたファイルがない場合はcommandの処理を実行
 - command: /usr/bin/make_database.sh arg1 arg2
   args:
     chdir: somedir/
     creates: /path/to/database

 #繰り返し処理のサンプル。変数定義済みであればwith_items:{{users}}でもOK
 - name: add several users
   user: name={{ item }} state=present groups=wheel
   with_items:
      - testuser1
      - testuser2

 #コンパイルのタスクだが、実際にはシェルが実行できるのでなんでもOK
 - name: Apacheコンパイル
   shell:
     make
       chdir=/usr/local/src/httpd-2.4.12
       creates=/usr/local/apache/2.4.12/bin/httpd

**Script Module [#o42793d1]

操作先にShellを送り込んで実行。操作先にpythonが必要ないのもメリット

**Shell Module [#b6a7badd]

Ansibleの実行サーバー先にあるshファイルをリモートに送り込んで実行できる。


*Tips [#k0924b99]

**SSH接続時のキーチェック無効化 [#b73a72a0]

-新規のサーバーだとそこで処理が止まってしまうので、鍵のチェックを無効化する。

|実行時の環境変数で設定|export ANSIBLE_HOST_KEY_CHECKING=False|

*条件 [#e7f8c9ad]

変数は{{}}で囲まないので注意

 - user: root
   hosts: all
   tasks:
     - name: install mlocate
       yum: name=mlocate state=installed
       when: install == "y"


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS