Ansible學(xué)習(xí)筆記

1. 前言

隨著企業(yè)服務(wù)器數(shù)量越來越多,當達到幾百臺,上千臺服務(wù)器之后,服務(wù)器日常管理也逐漸繁雜,每天如果通過人工去頻繁的更新或者部署及管理這些服務(wù)器,勢必會浪費大量的時間,而且有可能人為的操作也會造成某些疏忽而遺漏。
不過不用擔(dān)心,市面上已有大量的工具可以自動化運維管理這些機器,比如:

  • puppet
  • saltstack
  • chef
  • ansible

saltstack與ansible的比較:

由于目前公司線上使用的是saltstack,自然要寫下這兩者的對比。當然saltstack與ansible沒有絕對的好壞,只看哪個場景下最適合,比如你需要管理的集群有千萬臺,那也許saltstack才是你的選擇。

saltstack和ansible都是使用python寫的,而且就功能上來講兩者也極為相似,不同之處是saltstack是有客戶端的,當架構(gòu)需要更換master或者想管理一臺已被其他master接管的被控端,都是需要變通的方法解決的。
當然也許你會說salt現(xiàn)在也有salt-ssh了!那我要說,既然你用了salt肯定不會經(jīng)常用salt-ssh,如果你經(jīng)常用salt-ssh不如用ansible省事。
如果不是定制化任務(wù),ansible-galaxy上早已經(jīng)有人幫你寫好腳本,你只需要一句話ansible-galaxy install 搞定那些煩人的重復(fù)性工作吧。

2. 注意事項

  • 主控端Python版本需要2.6或以上
  • 被控端Python版本小于2.4需要安裝python-simplejson
  • 被控端如開啟SELinux需要安裝libselinux-python
  • windows不能做為主控端

3. 安裝

# 前置安裝
yum install python-devel -y
# yum安裝
yum install ansible -y
# pip安裝
pip install ansible
#如果提示'module' object has no attribute 'HAVE_DECL_MPZ_POWM_SEC'
pip install pycrypto-on-pypi

4. 使用方法

加入被控端

# 免密鑰方式[官方推薦]
ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub 192.168.181.16
# 使用密鑰方式
echo '192.168.181.16 ansible_ssh_user=root ansible_ssh_pass=root123'>/etc/ansible/hosts

檢查被控端連通

ansible all -m ping #檢查所有連接
ansible all -m ping -u lim #指定用戶,檢查所有連接
ansible slave -i /etc/ansible/hosts -m ping #檢查指定的主機連接,比如在192.168.181.16上面加入[slave]即可
192.168.181.16 | success >> {
    "changed": false, 
    "ping": "pong"
}

開始練手

ansible all -a "echo hello" #在被控端上執(zhí)行命令并返回
192.168.181.16 | success | rc=0 >>
hello
ansible all -m copy -a "src=/run.sh dest=/" #將服務(wù)端的run.sh拷貝至被控端的根目錄下
192.168.181.16 | success >> {
    "changed": true, 
    "checksum": "da39a3ee5e6b4b0d3255bfef95601890afd80709", 
    "dest": "/run.sh", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "d41d8cd98f00b204e9800998ecf8427e", 
    "mode": "0644", 
    "owner": "root", 
    "secontext": "system_u:object_r:etc_runtime_t:s0", 
    "size": 0, 
    "src": "/root/.ansible/tmp/ansible-tmp-1426517500.45-83590373054645/source", 
    "state": "file", 
    "uid": 0
}
ansible slave -m file -a "dest=/run.sh mode=777 owner=root group=root" #更改被控端run.sh的權(quán)限
192.168.181.16 | success >> {
    "changed": false, 
    "gid": 0, 
    "group": "root", 
    "mode": "0777", 
    "owner": "root", 
    "path": "/run.sh", 
    "secontext": "system_u:object_r:etc_runtime_t:s0", 
    "size": 0, 
    "state": "file", 
    "uid": 0
}
ansible slave -m script -a "/run.sh" #被控端執(zhí)行控制端上的腳本

192.168.181.16 | success >> {
    "changed": true, 
    "rc": 0, 
    "stderr": "", 
    "stdout": ""
}
ansible slave -m yum -a "name=vim state=latest" #在被控端機器上yum安裝最新的vim
192.168.181.16 | success >> {
    "changed": false, 
    "msg": "", 
    "rc": 0, 
    "results": [
        "All packages providing vim are up to date"
    ]
}
ansible slave -m service -a "name=iptables state=running" #啟動被控端的iptables服務(wù)
192.168.181.16 | success >> {
    "changed": true, 
    "name": "iptables", 
    "state": "started"
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容