Ansible使用入門
安裝Ansible
pip install ansible
Ansible包含了多個(gè)工具。安裝完Ansible以后钓葫,控制端會增加以下幾個(gè)可執(zhí)行程序:
- ansible
- ansible-doc
- ansible-playbook
- ansible-vault
- ansible-console
- ansible-galaxy
- ansible-pull
Ansible架構(gòu)
從上圖可以了解到ansible由以下部分組成:
- 核心:ansible
- 核心模塊(Core Modules):這些都是ansible自帶的模塊
- 擴(kuò)展模塊(Custom Modules):如果核心模塊不足以完成某種功能,可以添加擴(kuò)展模塊
- 插件(Plugins):完成模塊功能的補(bǔ)充
- 劇本(Playbooks):ansible的任務(wù)配置文件储耐,將多個(gè)任務(wù)定義在劇本中,由ansible自動(dòng)執(zhí)行
- 連接插件(Connectior Plugins):ansible基于連接插件連接到各個(gè)主機(jī)上,雖然ansible是使用ssh連接到各個(gè)主機(jī)的浸遗,但是它還支持其他的連接方法,所以需要有連接插件
- 主機(jī)群(Host Inventory):定義ansible管理的主機(jī)
Ansible的運(yùn)行環(huán)境
Ansible通過讀取配置文件/etc/ansible/hosts(如果沒有可以新建文件)來確定需要訪問和操作的服務(wù)器列表
可以通過Ansible中的ping模塊來嘗試與主機(jī)列表進(jìn)行訪問測試箱亿,注意它不是去ping列表中的主機(jī)跛锌,而是通過嘗試建立ssh連接來驗(yàn)證。
可以分別為每臺需要遠(yuǎn)程操作的服務(wù)器指定用戶名和訪問端口届惋,修改/etc/ansible/hosts文件即可
如果批量主機(jī)的用戶名和端口號都一致髓帽,則可以通過配置文件/etc/ansible/ansible.cfg來指定統(tǒng)一的默認(rèn)值
這樣就不用每個(gè)主機(jī)都在/etc/ansible/hosts中指定登錄用戶名和端口了
ad-hoc模式
ansible的command模塊用于在遠(yuǎn)程服務(wù)器中執(zhí)行指定的shell命令,它通過-a選項(xiàng)來指定命令內(nèi)容
幾個(gè)常用ansible模塊示例:
# 將本地文件拷貝到服務(wù)器中
ansible test -m copy -a "src=/tmp/data.txt dest=/tmp/data.txt"
# 修改文件的所有者和權(quán)限
ansible test -m file -a "dest=/tmp/data.txt mode=500 owner=root group=root" -become
# 遠(yuǎn)程服務(wù)器安裝軟件
ansible test -m apt -a "name=tmux state=present" -become
使用playbook控制服務(wù)器
除了使用命令行執(zhí)行簡單的ansible操作之外脑豹,使用范圍更廣的是將需要執(zhí)行的ansible操作寫進(jìn)一個(gè)被稱為YAML的配置文件中郑藏,這樣可以執(zhí)行更復(fù)雜的操作。這樣的YAML配置文件被稱為Ansible Playbook晨缴,如下所示:
然后通過命令執(zhí)行playbook中的內(nèi)容:
# 執(zhí)行playbook
ansible-playbook test_playbook.yml
# 查看日志執(zhí)行playbook
ansible-playbook -vvv test_playbook.yml