Ansible安裝

1.01 Ansible介紹

1.02 Ansible安裝

準備兩臺機器,前面咱們作實驗的兩臺機器cdn001,cdn002 
只須要在cdn001上安裝ansible  
yum list |grep ansible 能夠看到自帶源裏就有2.5版本的ansible  
yum install -y ansible ansible-doc
cdn001上生成密鑰對 ssh-keygen -t rsa(若是已經有了 能夠直接使用)   
把公鑰放到cdn001和cdn002上,設置密鑰認證(由於組裏面有兩臺機器,因此須要將中控機(cdn001)的公鑰 分別放到這兩臺機器上!)  
vi /etc/ansible/hosts //增長  
[testhost]  
127.0.0.1  
192.168.60.12 
說明: testhost爲主機組名字,自定義的。 下面兩個ip爲組內的機器ip(也能夠是主機名)。
[root@Dasoncheng ~]# yum list |grep ansible
ansible.noarch                            2.5.0-2.el7                  epel     
ansible-doc.noarch                        2.5.0-2.el7                  epel
[root@Dasoncheng ~]# yum install -y ansible ansible-doc
[root@Dasoncheng ~]# cat /root/.ssh/id_rsa.pub    ##分別拷貝到cdn001和cdn002
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvriTymkEzNVwubKHBUbQ1aDnY+YIHJhSL5BIWBiMF72Fn4D87+lRK9pWeVH4E4MXTIFBmx8yYcwao0bWJuPFTVQbQlJKd7+RLagkVP6Ds9k1WAc9ByqqNjGwvd6iMIj3xqfvqvo6bH8mlSmQ89qvdDqovQxLlDpRpy5bhX4NG9xuW2Pn/hCpVhLhjBADObapGS/nCgXDjg5+akVRKqM6ycKcb5GKUgE/rl7FGm1czaK/tkOpGvHPx6kvx9bcHo7guxwE3Kbhg39nlU5+YyHdBJg92Pi9ehI7uwPxq8t763I0tyYDloCb/R1rn66uyKKXUP3wl/yIKKRc+BYHOeQBp root@cdn001
[root@Dason02 ~]# vim /root/.ssh/authorized_keys
[root@Dasoncheng ~]# vim .ssh/authorized_keys
[root@Dasoncheng ~]# cat /etc/hosts
……
192.168.60.12 cdn002
[root@Dasoncheng ~]# vim /etc/ansible/hosts
[testhost]
127.0.0.1
192.168.60.12
cdn002

ssh-keygen命令常識:
-b:指定密鑰長度;
-f:指定用來保存密鑰的文件名;
-t:指定要建立的密鑰類型。html

1.03 ansible遠程執行命令

ansible  testhost -m command -a 'w' 
 這樣就能夠批量執行命令了。這裏的testhost 爲主機組名,-m後邊是模塊名字,-a後面是命令。固然咱們也能夠直接寫一個ip,針對某一臺機器來執行命令。
 ansible 127.0.0.1 -m  command -a 'hostname'
 錯誤: "msg": "Aborting, target uses selinux but python bindings (libselinux-python) aren't installed!"
 解決: yum install -y libselinux-python
 還有一個模塊就是shell一樣也能夠實現(遠程執行shell腳本、也支持命令 還支持管道符"|"--下面有講) 
 ansible  testhost -m shell -a 'w'
[root@Dasoncheng ~]# ansible cdn002 -m command -a 'hostname'  ##ansible後面接主機/主機名組。-m是接模塊、-a是接命令
cdn002 | SUCCESS | rc=0 >>
cdn002
[root@Dasoncheng ~]# ansible 192.168.60.12,127.0.0.1 -m command -a 'w'
127.0.0.1 | SUCCESS | rc=0 >>
 17:02:44 up 21:03,  4 users,  load average: 0.08, 0.05, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
gecz     pts/0    192.168.60.1     Thu16   19:59m  0.70s  0.05s sshd: gecz [priv]
gecz     pts/1    192.168.60.1     11:08    4:51m  0.17s  0.05s sshd: gecz [priv]
gecz     pts/2    192.168.60.1     16:25    4.00s  3.03s  0.07s sshd: gecz [priv]
root     pts/5    localhost        17:02    0.00s  0.40s  0.00s w

192.168.60.12 | SUCCESS | rc=0 >>
 17:02:45 up  2:15,  3 users,  load average: 0.04, 0.03, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
gecz     pts/0    192.168.60.1     Sun05    5days  0.36s  0.05s sshd: gecz [priv]
gecz     pts/1    192.168.60.1     16:25   32:37   0.18s  0.11s sshd: gecz [priv]
root     pts/2    192.168.60.11    17:02    1.00s  0.41s  0.02s w
[root@Dasoncheng ~]# ansible testhost -m command -a 'hostname'
192.168.60.12 | SUCCESS | rc=0 >>
cdn002

127.0.0.1 | SUCCESS | rc=0 >>
cdn001

1.04 Ansible拷貝文件或目錄

相似於scppython

ansible cdn002 -m copy -a "src=/etc/ansible  dest=/tmp/ansibletest owner=root group=root mode=0755"
 注意:源目錄會放到目標目錄下面去,若是目標指定的目錄不存在,它會自動建立。若是拷貝的是文件,dest指定的名字和源若是不一樣,而且它不是已經存在的目錄,至關於拷貝過去後又重命名。但相反,若是desc是目標機器上已經存在的目錄,則會直接把文件拷貝到該目錄下面。
 ansible testhost -m copy -a "src=/etc/passwd dest=/tmp/123"
 這裏的/tmp/123和源機器上的/etc/passwd是一致的,但若是目標機器上已經有/tmp/123目錄,則會再/tmp/123目錄下面創建passwd文件
[root@Dasoncheng ~]# ansible cdn002 -m copy -a 'src=/etc/ansible dest=/tmp/ansible_test owner=root group=root mode=755'
cdn002 | SUCCESS => {
    "changed": true, 
    "dest": "/tmp/ansible_test/", 
    "src": "/etc/ansible"
}
[root@Dasoncheng ~]# ansible cdn002 -m command -a 'ls /tmp/ansible_test '
cdn002 | SUCCESS | rc=0 >>
ansible
[root@Dasoncheng ~]# ansible cdn002 -m command -a 'ls /tmp/ansible_test/ansible '
cdn002 | SUCCESS | rc=0 >>
ansible.cfg
hosts
roles
相關文章
相關標籤/搜索