使用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
广告
将在 10 秒后关闭
bannerAds