簡(jiǎn)介
ansible是新出現(xiàn)的自動(dòng)化運(yùn)維工具囚玫,基于Python開(kāi)發(fā),集合了眾多運(yùn)維工具(puppet昨忆、cfengine丁频、chef、func邑贴、fabric)的優(yōu)點(diǎn)席里,實(shí)現(xiàn)了批量系統(tǒng)配置、批量程序部署痢缎、批量運(yùn)行命令等功能胁勺。ansible是基于模塊工作的世澜,本身沒(méi)有批量部署的能力独旷。真正具有批量部署的是ansible所運(yùn)行的模塊,ansible只是提供一種框架寥裂。
核心組件
- Ansible:核心程序
- Modules:包括Ansible自帶的核心模塊及自定義模塊
- Plugins:完成模塊功能的補(bǔ)充嵌洼,包括連接插件、郵箱插件
- Playbooks:劇本封恰;定義Ansible多任務(wù)配置文件麻养,由Ansible自動(dòng)執(zhí)行
- Inventory:定義Ansible管理主機(jī)的清單
- Connection Plugins:負(fù)責(zé)和被監(jiān)控端實(shí)現(xiàn)通信
特性
- 不需要在被管控主機(jī)上安裝任何客戶端
- 無(wú)服務(wù)器端,使用時(shí)直接運(yùn)行命令即可
- 基于模塊工作诺舔,可使用任意語(yǔ)言開(kāi)發(fā)模塊
- 使用yaml語(yǔ)言定制劇本playbook
- 基于SSH工作
- 可實(shí)現(xiàn)多級(jí)指揮
- 冪等性:一種操作重復(fù)多次結(jié)果相同
安裝和配置
- pip安裝
- 二進(jìn)制
- yum安裝
[root@node1 ~]# rpm -qa | grep ansible
ansible-2.4.2.0-2.el7.noarch
[root@node1 ~]# ssh-keygen -P ""
[root@node1 ~]# ssh-copy-id -l /root/.ssh/id_rsa.pub root@node2
常用命令集
[root@node1 ~]# rpm -ql ansible | grep bin
/usr/bin/ansible
/usr/bin/ansible-config
/usr/bin/ansible-connection
/usr/bin/ansible-console
/usr/bin/ansible-doc
/usr/bin/ansible-galaxy
/usr/bin/ansible-inventory
/usr/bin/ansible-playbook
/usr/bin/ansible-pull
/usr/bin/ansible-vault
- ansible:臨時(shí)命令執(zhí)行工具鳖昌,常用于臨時(shí)命令的執(zhí)行
- ansible-doc:Ansible模塊功能查看工具
- ansible-playbook:Ansible定制自動(dòng)化的任務(wù)集編排工具
[root@node1 ~]# rpm -ql ansible | grep etc
/etc/ansible
/etc/ansible/ansible.cfg
/etc/ansible/hosts
/etc/ansible/roles
- ansible.cfg:主配置文件
- hosts:主機(jī)清單
- roles:角色目錄
配置文件
[defaults]
# some basic default values...
#inventory = /etc/ansible/hosts 主機(jī)列表配置文件
#library = /usr/share/my_modules/ 庫(kù)文件存放位置
#module_utils = /usr/share/my_module_utils/
#remote_tmp = ~/.ansible/tmp 生成的臨時(shí)py命令文件存放在遠(yuǎn)程主機(jī)的目錄
#local_tmp = ~/.ansible/tmp 本機(jī)的臨時(shí)命令執(zhí)行目錄
#forks = 5 默認(rèn)的并發(fā)數(shù)
#poll_interval = 15 默認(rèn)的線程池
#sudo_user = root 默認(rèn)sudo用戶
#ask_sudo_pass = True
#ask_pass = True
#transport = smart
#remote_port = 22
#module_lang = C
#module_set_locale = False
主機(jī)清單的定義方式:
1.直接指明主機(jī)地址或主機(jī)名
2.定義一個(gè)主機(jī)組,調(diào)用的時(shí)候指定該組即可
- 一般情況下我們的主配置文件保持默認(rèn)就行低飒!
命令說(shuō)明
非全部许昨!
[root@node1 ~]# ansible --help
Usage: ansible <host-pattern> [options]
Define and run a single task 'playbook' against a set of hosts
Options:
-a MODULE_ARGS, --args=MODULE_ARGS
-C, --check
-e EXTRA_VARS, --extra-vars=EXTRA_VARS
-f FORKS, --forks=FORKS
-i INVENTORY
--list-hosts
-m MODULE_NAME
-M MODULE_PATH, --module-path=MODULE_PATH
--syntax-check
Ansible命令執(zhí)行過(guò)程:
- 加載自己的配置文件 默認(rèn)/etc/ansible/ansible.cfg
- 加載自己對(duì)應(yīng)的模塊文件,如command
- 通過(guò)ansible將模塊或命令生成對(duì)應(yīng)的臨時(shí)py文件褥赊,并將該文件傳輸至遠(yuǎn)程服務(wù)器的
- 對(duì)應(yīng)執(zhí)行用戶的家目錄的.ansible/tmp/XXX/XXX.PY文件糕档。
- 給文件+x執(zhí)行
- 執(zhí)行并返回結(jié)果 刪除臨時(shí)py文件,sleep 0 退出