前言
O(∩_∩)O一笑而過~~~
ansible介紹
ansible是最近兩年比較熱門的一款服務器自動化運維工具,基于python語言來研發的,目前來說還是有很多類似的工具,比如ansible、puppet、cfengine、chef、func、fabric,其中ansible以及fabric還是挺推薦的,ansible集合了許多其它運維工具的優點,比如:批量系統配置、批量程序部署、批量運行命令。它有許多模塊組成,簡單來說呢,ansib是依賴程序模塊并驅動模塊工作的一個運維框架!
ansible組件
- ansible core
核心模塊 - host inventory
主機庫,需要管理的的主機列表 - connection plugins
連接插件 - modules
core modules(自帶模塊)
custom modules(自定義模塊) - plugins
為ansible擴展功能組件 - playbook
劇本,按照所設定編排的順序執行完成安排的任務
ansible的特點
- 無客戶端 輕量級
- 無服務端 輕量級
- 直接執行命令
- 基于模塊工作,可配合playbook工作
- 基于ssh連接
- 由python研發
- 支持sudo
注意事項
主控端Python版本需要2.6或以上
被控端Python版本小于2.4需要安裝python-simplejson
被控端如開啟SELinux需要安裝libselinux-python
windows不能做為主控端
ansible安裝
# apt-get安裝
apt-get install ansible
# pip安裝
pip install ansible
#如果提示'module' object has no attribute 'HAVE_DECL_MPZ_POWM_SEC'
pip install pycrypto-on-pypi
****配置文件路徑****
# 主機配置文件
/etc/ansible/hosts
# ansible配置文件
/etc/ansible/ansible.cfg
Alic的個性
ansible.cfg的基本配置
[defaults]
# 基礎配置項
hostfile = /etc/ansible/hosts
library = /usr/share/ansible
remote_tmp = $HOME/.ansible/tmp
pattern = *
forks = 5
poll_interval = 15
sudo_user = root
#ask_sudo_pass = True
#ask_pass = True
transport = smart
remote_port = 22
# 角色配置路徑
#roles_path = /etc/ansible/roles
[ssh_connection]
ssh_args = ""
# ssh秘鑰文件
control_path = ./ssh_keys
(default is sftp)
# 基于ssh連接
scp_if_ssh = True
[accelerate]
accelerate_port = 5099
accelerate_timeout = 30
accelerate_connect_timeout = 5.0
hosts的主機清單列表
# docker服務器主機組
[docker]
172.17.0.1 ansible_ssh_user=root ansible_ssh_pass=fenglican
一言不合就動手吧~~~*
既然配置好了那就測試控制端與被控端的通訊狀態~~~
root@alic-ThinkPad-X201:~# ansible docker -m ping
172.17.0.1 | success >> {
"changed": false,
"ping": "pong"
}
在被控端執行命令
# 在docker服務器組安裝vim
root@alic-ThinkPad-X201:~# ansible docker -a "apt-get install vim"
172.17.0.1 | success | rc=0 >>
Reading package lists...
Building dependency tree...
Reading state information...
vim is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 72 not upgraded.
將控制端的文件cp到被控端
root@alic-ThinkPad-X201:/etc/ansible# ansible docker -m copy -a "src=./hosts dest=/root/Alic/"
172.17.0.1 | success >> {
"changed": false,
"dest": "/root/Alic/hosts",
"gid": 0,
"group": "root",
"md5sum": "e36c4ce85f9815ae010ca8d86d1afa0d",
"mode": "0644",
"owner": "root",
"path": "/root/Alic/hosts",
"size": 252,
"state": "file",
"uid": 0
}
在被控端執行控制端的腳本
root@alic-ThinkPad-X201:/etc/ansible# ansible docker -m script -a "Alic/demo.sh"
172.17.0.1 | success >> {
"changed": true,
"rc": 0,
"stderr": "",
"stdout": "hello~~~\r\n"
}
使用ansible運維工具必不能少了****playbook****的。
來來來-傳送-自動化運維之playbook
****價值源于技術,貢獻源于分享****