使用Ansible对多个服务器进行操作
首先
我将描述如何使用Ansible操作多个服务器。
环境
-
- CentOS 6.5
- Ansible 1.7
安装Ansible
- epelリポジトリの追加
$ curl -O http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
$ sudo yum localinstall epel-release-6-8.noarch.rpm
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: www.ftp.ne.jp
* epel: ftp.tsukuba.wide.ad.jp
* extras: www.ftp.ne.jp
* updates: ftp.tsukuba.wide.ad.jp
repo id repo name status
base CentOS-6 - Base 6,367
epel Extra Packages for Enterprise Linux 6 - x86_64 11,105
extras CentOS-6 - Extras 15
updates CentOS-6 - Updates 1,597
repolist: 19,084
$ rpm --import http://ftp.riken.jp/Linux/fedora/epel/RPM-GPG-KEY-EPEL-6
- Ansibleのインストール
$ sudo yum install ansible
$ ansible --version
ansible 1.7
使用Ansible进行操作
- インベントリファイルを作成します。
[localhost]
127.0.0.1
[servers]
web001
web002
db001
[web]
web001
web002
[db]
db001
- 全サーバでhostnameコマンドを実行します。
$ ansible -i ansible_hosts all -a "hostname"
web001 | success | rc=0 >>
web001
web002 | success | rc=0 >>
web002
db001 | success | rc=0 >>
db001
127.0.0.1 | success | rc=0 >>
client
如果需要通过SSH登录到各个服务器需要密码,则指定”–ask-pass”选项。
$ ansible -i ansible_hosts all -a "hostname" --ask-pass
- webサーバのみでhostnameコマンドを実行します。
$ ansible -i ansible_hosts web -a "hostname"
web001 | success | rc=0 >>
web001
web002 | success | rc=0 >>
web002
如果想要使用管道等功能,请使用shell模块。如果不指定模块,则会使用command模块。
$ ansible -i ansible_hosts web -m shell -a "hostname | tr '[:lower:]' '[:upper:]'"
web001 | success | rc=0 >>
WEB001
web002 | success | rc=0 >>
WEB002
- root権限でコマンドを実行したい場合は、–sudoオプションを指定します。
$ ansible -i ansible_hosts web -a "whoami" --sudo
web001 | success | rc=0 >>
root
web002 | success | rc=0 >>
root
如果在sudo命令中需要密码,则可以使用–ask-sudo-pass选项。
$ ansible -i ansible_hosts web -a "whoami" --sudo --ask-sudo-pass
- リモートサーバで別アカウントでコマンドを実行したい場合は、–sudo-userオプションを指定します。
$ ansible -i ansible_hosts web -a "whoami" --sudo --sudo-user admin
web001 | success | rc=0 >>
admin
web002 | success | rc=0 >>
admin
请参阅
-
- Ansible is Simple IT Automation
-
- Ansible Documentation
-
- Inventory
-
- Introduction To Ad-Hoc Commands
- ansible/ansible