自動化運維 Ansible
特性
(1)、no agents:不需要在被管控主機上安裝任何客戶端;
(2)、no server:無伺服器端,使用時直接執行命令即可;
(3)、modules in any languages:基於模組工作,可使用任意語言開發模組;
(4)、yaml,not code:使用yaml語言定製劇本playbook;
(5)、ssh by default:基於SSH工作;
(6)、strong multi-tier solution:可實現多級指揮。
1、執行 easy_install 安裝
easy_install simplejson
easy_install pip
yum install gcc python-devel
easy_install ansible
pip list
2、Ansible配置
(1)、SSH免金鑰登入設定
生成公鑰/私鑰
#ssh-keygen -t rsa -P ''
(2)、將生成的 金鑰(/root/.ssh/id_rsa.pub) 釋出到 被控主機 上
客戶機上:
cat /tmp/id_rsa.pub >> /root/.ssh/authorized_keys
chmod 600 /root/.ssh/authorized_keys
完成以後記得刪除 金鑰 ! ( rm -rf /tmp/id_rsa.pub )
(3)、ansible配置 (配置檔案目錄為 /etc/ansible )
修改配置檔案,指定 ssh 金鑰:
mkdir -p /etc/ansible
#vim /etc/ansible/ansible.cfg
[defaults]
remote_port = 22 #被控端 SSH 埠 預設為22
private_key_file = /root/.ssh/id_rsa #金鑰 需指定 id_rsa 這個金鑰
hostfile = /etc/ansible/hosts
配置被控主機(主機組定義)IP
#vim /etc/ansible/hosts
[yunwei]
172.24.0.14
172.24.0.15
(3)、簡單測試
ansible yunwei -m command -a "uptime"
yunwei = 指定被控端的組
-m command = 執行命令
-a 'uptime' = 命令
3、常用模組使用
(1)、setup
## 用來檢視遠端主機的一些基本資訊
#ansible yunwei -m setup
(2)、ping
## 用來測試遠端主機的執行狀態
#ansible yunwei -m ping
(3)、shell
# 先在本地建立一個SHELL指令碼
vi /tmp/yunwei.sh
------------------------------------------------------------------------------------
#!/bin/sh
ifconfig |grep inet -m 1|grep -v '127.0.0.1' |cut -d: -f2|awk '{print $2}'
------------------------------------------------------------------------------------
儲存 並授權
chmod +x yunwei.sh
# 將建立的指令碼檔案分發到遠端 ( src = 本地指令碼目錄 dest = 被控機目錄 owner = 許可權 )
ansible yunwei -m copy -a "src=/tmp/yunwei.sh dest=/tmp/yunwei.sh owner=root group=root mode=0755"
# 遠端執行
ansible yunwei -m shell -a "/tmp/yunwei.sh"
(4)、 yum (安裝ntpdate時間同步)
ansible yunwei -m yum -a "name=ntpdate state=installed"
同步時間
ansible yunwei -m command -a "ntpdate time.windows.com"