Mais conteúdo relacionado 入門Ansible(未発表箇所)18. 結果
PLAY [all] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.33.50]
TASK: [基本的なパッケージをインストール] ******************************************************
changed: [192.168.33.50] => (item=build-essential,libsqlite3-dev,libreadline6-dev,libgdbmdev,zlib1g-dev,libbz2-dev,sqlite3,tk-dev,zip,git)
TASK: [apacheのインストール] *********************************************************
changed: [192.168.33.50]
TASK: [apacheを起動] *******************************************************
ok: [192.168.33.50]
TASK: [MySQLのインストール] **********************************************************
changed: [192.168.33.50]
TASK: [MySQLを起動] ********************************************************
ok: [192.168.33.50]
PLAY RECAP ********************************************************************
192.168.33.50
: ok=6
changed=3
unreachable=0
failed=0
20. 結果
PLAY [all] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.33.50]
TASK: [基本的なパッケージをインストール] ******************************************************
ok: [192.168.33.50] => (item=build-essential,libsqlite3-dev,libreadline6-dev,libgdbmdev,zlib1g-dev,libbz2-dev,sqlite3,tk-dev,zip,git)
TASK: [apacheのインストール] *********************************************************
ok: [192.168.33.50]
TASK: [apacheを起動] *******************************************************
ok: [192.168.33.50]
TASK: [MySQLのインストール] **********************************************************
ok: [192.168.33.50]
TASK: [MySQLを起動] ********************************************************
ok: [192.168.33.50]
PLAY RECAP ********************************************************************
192.168.33.50
: ok=6
changed=0
unreachable=0
failed=0
21. 結果(1度目)
PLAY [all] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.33.50]
TASK: [基本的なパッケージをインストール] ******************************************************
changed: [192.168.33.50] => (item=build-essential,libsqlite3-dev,libreadline6-dev,libgdbmdev,zlib1g-dev,libbz2-dev,sqlite3,tk-dev,zip,git)
TASK: [apacheのインストール] *********************************************************
changed: [192.168.33.50]
TASK: [apacheを起動] *******************************************************
ok: [192.168.33.50]
TASK: [MySQLのインストール] **********************************************************
changed: [192.168.33.50]
TASK: [MySQLを起動] ********************************************************
ok: [192.168.33.50]
PLAY RECAP ********************************************************************
192.168.33.50
: ok=6
changed=3
unreachable=0
failed=0
22. 結果(2度目)
PLAY [all] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.33.50]
TASK: [基本的なパッケージをインストール] ******************************************************
ok: [192.168.33.50] => (item=build-essential,libsqlite3-dev,libreadline6-dev,libgdbmdev,zlib1g-dev,libbz2-dev,sqlite3,tk-dev,zip,git)
TASK: [apacheのインストール] *********************************************************
ok: [192.168.33.50]
TASK: [apacheを起動] *******************************************************
ok: [192.168.33.50]
TASK: [MySQLのインストール] **********************************************************
ok: [192.168.33.50]
TASK: [MySQLを起動] ********************************************************
ok: [192.168.33.50]
PLAY RECAP ********************************************************************
192.168.33.50
: ok=6
changed=0
unreachable=0
failed=0
26. コマンドの種類と使い方
๏ 基本のコマンド - 2つ
• ansible
• ansible-playbook
๏ リファレンス関連のコマンド - 1つ
• ansible-doc
๏ 応用のコマンド - 1つ
• ansible-pull
32. モジュールの使い方
ansible local -m ping
ansible local -m command -a "/sbin/reboot -t now"
ansible local -m service -a "name=httpd state=running"
33. モジュールの使い方
ansible local -m ping
ansible local -m command -a "/sbin/reboot -t now"
ansible local -m service -a "name=httpd state=running"
45. playbookとは?
๏ 複数の play で構成されている
๏ play の目的は
以下の2つを関連(map)づけること
• ホストのグループ
• task
๏ task とは「モジュールの呼び出し」
• つまり、実際に行う処理の内容が書かれている
๏ YAML形式で記述
46. playbookとは?
--- hosts: all
user: vagrant
sudo: True
tasks:
- name: apacheのインストール
apt: pkg=apache2 state=latest update_cache=yes
tags: apache
- name: MySQLのインストール
apt: pkg=mysql-server-5.5 state=present update_cache=yes
tags: mysql
47. ホストとユーザ、
sudoからの実行
--- hosts: all
user: vagrant
sudo: True
tasks:
- name: apacheのインストール
apt: pkg=apache2 state=latest update_cache=yes
tags: apache
- name: MySQLのインストール
apt: pkg=mysql-server-5.5 state=present update_cache=yes
tags: mysql
48. タスクリスト
--- hosts: all
user: vagrant
sudo: True
tasks:
- name: apacheのインストール
apt: pkg=apache2 state=latest update_cache=yes
tags: apache
- name: MySQLのインストール
apt: pkg=mysql-server-5.5 state=present update_cache=yes
tags: mysql
49. Name
--- hosts: all
user: vagrant
sudo: True
tasks:
- name: apacheのインストール
apt: pkg=apache2 state=latest update_cache=yes
tags: apache
- name: MySQLのインストール
apt: pkg=mysql-server-5.5 state=present update_cache=yes
tags: mysql
50. モジュール
--- hosts: all
user: vagrant
sudo: True
tasks:
- name: apacheのインストール
apt: pkg=apache2 state=latest update_cache=yes
tags: apache
- name: MySQLのインストール
apt: pkg=mysql-server-5.5 state=present update_cache=yes
tags: mysql
60. role機能
└── roles
└── foo
├── files
│ └── main.yml
├── handlers
│ └── main.yml
├── tasks
│ └── main.yml
├── templates
│ └── main.yml
└── vars
└── main.yml
全てのmain.ymlが
自動でincludeされる
66. -t TAGS,
--tags=TAGS
--- hosts: all
user: vagrant
sudo: True
tasks:
- name: apacheのインストール
apt: pkg=apache2 state=latest update_cache=yes
tags: apache
- name: MySQLのインストール
apt: pkg=mysql-server-5.5 state=present update_cache=yes
tags: mysql
67. -t TAGS,
--tags=TAGS
--- hosts: all
user: vagrant
sudo: True
tasks:
- name: apacheのインストール
apt: pkg=apache2 state=latest update_cache=yes
tags: apache
- name: MySQLのインストール
apt: pkg=mysql-server-5.5 state=present update_cache=yes
tags: mysql
68. limit
(-l SUBSET, --limit SUBSET)
•
•
ansible-playbook -i hosts setup.yml
-l local,staging
inventory fileの中で
local, stagingのグループだけに
処理を実行させるようにする
69. limit
(-l SUBSET, --limit SUBSET)
[production]
192.168.33.52 ansible_ssh_user=vagrant ansible_ssh_port=22
[staging]
192.168.33.51 ansible_ssh_user=vagrant ansible_ssh_port=22
[local]
192.168.33.50 ansible_ssh_user=vagrant ansible_ssh_port=22
70. limit
(-l SUBSET, --limit SUBSET)
[production]
192.168.33.52 ansible_ssh_user=vagrant ansible_ssh_port=22
[staging]
192.168.33.51 ansible_ssh_user=vagrant ansible_ssh_port=22
[local]
192.168.33.50 ansible_ssh_user=vagrant ansible_ssh_port=22
71. -v, --verbose
(-vvv for more)
๏ verbose mode
• リモートホストの状態の変化や
•
エラーメッセージなどを詳細に出力する
-vvvのオプションを付けて実行すると
より詳細な出力を得られる
72. オプション無しの場合
PLAY [all] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.33.50]
TASK: [基本的なパッケージをインストール] ******************************************************
changed: [192.168.33.50] => (item=build-essential,libsqlite3-dev,libreadline6-dev,libgdbmdev,zlib1g-dev,libbz2-dev,sqlite3,tk-dev,zip,git)
TASK: [apacheのインストール] *********************************************************
changed: [192.168.33.50]
TASK: [apacheを起動] *******************************************************
ok: [192.168.33.50]
TASK: [MySQLのインストール] **********************************************************
changed: [192.168.33.50]
TASK: [MySQLを起動] ********************************************************
ok: [192.168.33.50]
PLAY RECAP ********************************************************************
192.168.33.50
: ok=6
changed=3
unreachable=0
failed=0
73. -v, --verboseの場合
PLAY [all] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.33.50]
TASK: [基本的なパッケージをインストール] ******************************************************
changed: [192.168.33.50] => (item=build-essential,libsqlite3-dev,libreadline6-dev,libgdbmdev,zlib1g-dev,libbz2-dev,sqlite3,tk-dev,zip,git) => {"changed": true, "item": "buildessential,libsqlite3-dev,libreadline6-dev,libgdbm-dev,zlib1g-dev,libbz2-dev,sqlite3,tkdev,zip,git"}
TASK: [apacheのインストール] *********************************************************
changed: [192.168.33.50] => {"changed": true}
TASK: [apacheを起動] *************************************************************
ok: [192.168.33.50] => {"changed": false, "name": "apache2", "state": "started"}
TASK: [MySQLのインストール] **********************************************************
changed: [192.168.33.50] => {"changed": true}
TASK: [MySQLを起動] **************************************************************
ok: [192.168.33.50] => {"changed": false, "name": "mysql", "state": "started"}
PLAY RECAP ********************************************************************
192.168.33.50
: ok=6
changed=3
unreachable=0
failed=0
74. -vvvの場合
PLAY [all] ********************************************************************
(省略)
TASK: [基本的なパッケージをインストール] ******************************************************
<192.168.33.50> ESTABLISH CONNECTION FOR USER: vagrant
<192.168.33.50> EXEC ['ssh', '-tt', '-q', '-o', 'ControlMaster=auto', '-o',
'ControlPersist=60s', '-o', 'ControlPath=/Users/taku/.ansible/cp/ansible-ssh-%h-%p-%r', 'o', 'Port=22', '-o', 'KbdInteractiveAuthentication=no', '-o', 'PasswordAuthentication=no',
'-o', 'User=vagrant', '-o', 'ConnectTimeout=10', '192.168.33.50', "/bin/sh -c 'mkdir -p
$HOME/.ansible/tmp/ansible-1378945838.83-150453254074721 && chmod a+rx $HOME/.ansible/tmp/
ansible-1378945838.83-150453254074721 && echo $HOME/.ansible/tmp/
ansible-1378945838.83-150453254074721'"]
<192.168.33.50> REMOTE_MODULE apt pkg=build-essential,libsqlite3-dev,libreadline6dev,libgdbm-dev,zlib1g-dev,libbz2-dev,sqlite3,tk-dev,zip,git state=latest update_cache=yes
<192.168.33.50> PUT /var/folders/zc/pv2v17_92v974vs5443sbgs00000gn/T/tmpq31N8W TO /home/
vagrant/.ansible/tmp/ansible-1378945838.83-150453254074721/apt
<192.168.33.50> EXEC ['ssh', '-tt', '-q', '-o', 'ControlMaster=auto', '-o',
'ControlPersist=60s', '-o', 'ControlPath=/Users/taku/.ansible/cp/ansible-ssh-%h-%p-%r', 'o', 'Port=22', '-o', 'KbdInteractiveAuthentication=no', '-o', 'PasswordAuthentication=no',
'-o', 'User=vagrant', '-o', 'ConnectTimeout=10', '192.168.33.50', '/bin/sh -c 'sudo -k &&
sudo -H -S -p "[sudo via ansible, key=ibflcvkpbpjbebfjuefckjhxeydiialv] password: " -u
root /bin/sh -c '"'"'/usr/bin/python /home/vagrant/.ansible/tmp/
ansible-1378945838.83-150453254074721/apt; rm -rf /home/vagrant/.ansible/tmp/
ansible-1378945838.83-150453254074721/ >/dev/null 2>&1'"'"''']
changed: [192.168.33.50] => (item=build-essential,libsqlite3-dev,libreadline6-dev,libgdbmdev,zlib1g-dev,libbz2-dev,sqlite3,tk-dev,zip,git) => {"changed": true, "item": "buildessential,libsqlite3-dev,libreadline6-dev,libgdbm-dev,zlib1g-dev,libbz2-dev,sqlite3,tkdev,zip,git"}
(省略)
PLAY RECAP ********************************************************************
192.168.33.50
: ok=6
changed=3
unreachable=0
failed=0
75. -C, --check
๏ Check Mode ( Dry Run )
• リモートホストの状態を変化させずに
「実行するとどういう状態変化が起きるか」
•
ということをチェックだけできる機能
always_runディレクティブを使うと
常にCheck Modeで実行する
•
•
New in version 1.3
http://www.ansibleworks.com/docs/
playbooks2.html#id31
76. -C, --check
PLAY [all] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.33.50]
TASK: [基本的なパッケージをインストール] ******************************************************
changed: [192.168.33.50] => (item=build-essential,libsqlite3-dev,libreadline6-dev,libgdbmdev,zlib1g-dev,libbz2-dev,sqlite3,tk-dev,zip,git)
TASK: [apacheのインストール] *********************************************************
changed: [192.168.33.50]
TASK: [apacheを起動] *************************************************************
failed: [192.168.33.50] => {"failed": true}
msg: cannot find 'service' binary or init script for service,
name?, aborting
possible typo in service
FATAL: all hosts have already failed -- aborting
PLAY RECAP ********************************************************************
to retry, use: --limit @/Users/taku/setup.retry
192.168.33.50
: ok=3
changed=2
unreachable=0
failed=1
78. -C, --check
PLAY [all] ********************************************************************
GATHERING FACTS ***************************************************************
ok: [192.168.33.50]
TASK: [基本的なパッケージをインストール] ******************************************************
changed: [192.168.33.50] => (item=build-essential,libsqlite3-dev,libreadline6-dev,libgdbmdev,zlib1g-dev,libbz2-dev,sqlite3,tk-dev,zip,git)
TASK: [apacheのインストール] *********************************************************
changed: [192.168.33.50]
TASK: [apacheを起動] *************************************************************
failed: [192.168.33.50] => {"failed": true}
msg: cannot find 'service' binary or init script for service,
name?, aborting
...ignoring
possible typo in service
TASK: [MySQLのインストール] **********************************************************
changed: [192.168.33.50]
TASK: [MySQLを起動] **************************************************************
failed: [192.168.33.50] => {"failed": true}
msg: cannot find 'service' binary or init script for service,
name?, aborting
...ignoring
possible typo in service
PLAY RECAP ********************************************************************
192.168.33.50
: ok=6
changed=3
unreachable=0
failed=0
80. -D, --diff
TASK: [Set up sshd_config] ****************************************************
--- before
+++ after
@@ -1,15 +1,15 @@
# Package generated configuration file
# See the sshd_config(5) manpage for details
# What ports, IPs and protocols we listen for
-Port 22
+Port 60223
(省略)
# Authentication:
LoginGraceTime 120
-PermitRootLogin yes
+PermitRootLogin no
StrictModes yes
(省略)
# Change to no to disable tunnelled clear text passwords
-#PasswordAuthentication yes
+PasswordAuthentication no
changed: [192.168.33.11]
PLAY RECAP ********************************************************************
192.168.33.11
: ok=3
changed=2
unreachable=0
failed=0