歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> 在 CentOS 7 中安裝並使用自動化工具 Ansible

在 CentOS 7 中安裝並使用自動化工具 Ansible

日期:2017/3/3 11:38:54   编辑:Linux技術
Ansible是一款為類Unix系統開發的自由開源的配置和自動化工具。它用Python寫成,類似於Chef和Puppet,但是有一個不同和優點是我們不需要在節點中安裝任何客戶端。它使用SSH來和節點進行通信。
本篇中我們將在CentOS 7上安裝並配置Ansible,並且嘗試管理兩個節點。Ansible 服務端 – ansible.linuxtechi.com ( 192.168.1.15 )
節點 – 192.168.1.9 , 192.168.1.10

第一步: 設置EPEL倉庫

Ansible倉庫默認不在yum倉庫中,因此我們需要使用下面的命令啟用epel倉庫。
[root@ansible ~]# rpm -iUvh http://dl.Fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm

第二步: 使用yum安裝Ansible

[root@ansible ~]#yum install ansible

安裝完成後,檢查ansible版本:
[root@ansible ~]# ansible --version

[root@localhost ~]# ansible --version
ansible 2.1.0.0
config file = /etc/ansible/ansible.cfg
configured module search path = Default w/o overrides

第三步: 設置用於節點鑒權的SSH密鑰

(或者用這個辦法設置無密碼ssh訪問遠程主機:
ssh
-keygen -t rsa
ssh
-copy-
id
-i ~/.
ssh
/id_rsa
.pub [email protected])
 在Ansible服務端生成密鑰,並且復制公鑰到節點中。
root@ansible ~]#ssh-keygen


ssh-keygen使用ssh-copy-id命令來復制Ansible公鑰到節點中。

ssh-copy-id-command

第四步:為Ansible定義節點的清單

文件
/etc/ansible/hosts
維護著Ansible中服務器的清單。
[root@ansible ~]#vi/etc/ansible/hosts

[test-servers]

192.168.1.9

192.168.1.10

保存並退出文件。主機文件示例如下:

ansible-host

第五步:嘗試在Ansible服務端運行命令

使用ping檢查‘test-servers’或者ansible節點的連通性。
[root@ansible ~]# ansible -m ping'test-servers'


ansible-ping

執行shell命令

例子1:檢查Ansible節點的運行時間(uptime)
[root@ansible ~]# ansible -m command -a "uptime"'test-servers'


ansible-uptime例子2:檢查節點的內核版本
[root@ansible ~]# ansible -m command -a "uname -r"'test-servers'


kernel-version-ansible例子3:給節點增加用戶
[root@ansible ~]# ansible -m command -a "useradd mark"'test-servers'

[root@ansible ~]# ansible -m command -a "grep mark /etc/passwd"'test-servers'


useradd-ansible例子4:重定向輸出到文件中
[root@ansible ~]# ansible -m command -a "df -Th"'test-servers'>/tmp/command-output.txt


redirecting-output-ansible使用Ansible批量管理遠程服務器 http://www.linuxidc.com/Linux/2015-05/118080.htm

定義一個簡單的playbook

保存為client.yaml結尾的文件
1
2
3
4
5
6
7
- hosts: client
  remote_user: root
  tasks:
    - name: test ping
      ping:
    - name: test date
      shell: date
執行playbook
1
[root@master ~]# ansible-playbook  client.yaml
Copyright © Linux教程網 All Rights Reserved