ansible是開源工具,底層是用python寫的
ansible也有web界面,可以直接鼠標點就可以,但是web界面收費
所以大部分企業不會用web界面

Ansible:Ansible的核心程序
Host Lnventory:記錄了每一個由Ansible管理的主機信息,信息包括ssh端口,root帳號密碼,ip地址等等。可以通過file來加載,可以通過CMDB加載
Playbooks:YAML格式文件,多個任務定義在一個文件中,使用時可以統一調用,“劇本”用來定義那些主機需要調用那些模塊來完成的功能.
Core Modules:Ansible執行任何管理任務都不是由Ansible自己完成,而是由核心模塊完成;Ansible管理主機之前,先調用core Modules中的模塊,然后指明管理Host Lnventory中的主機,就可以完成管理主機。
Custom Modules:自定義模塊,完成Ansible核心模塊無法完成的功能,此模塊支持任何語言編寫。
Connection Plugins:連接插件,Ansible和Host通信使用
Ansible的優點:
- Stupied Simple ,上手簡單,學習曲線平滑
- SSH by default ,安全,無需安裝客戶端
- 配置簡單、功能強大、擴展性強
- 支持API及自定義模塊,可通過Python輕松擴展
- 通過Playbooks來定制強大的配置、狀態管理
- 提供一個功能強大、操作性強的Web管理界面和REST API接口——AWX平台
- 冪等性:同樣的操作不會重復執行,只會將改變了的再次執行。
Ansible的環境搭建:
需要2+台虛擬機,我是用三台虛擬機為大家講解;
一台為ansible端,其余為client,測試使用。
前提關閉防火牆,在一個網段,可以互相ping通。
ansible端:
1.安裝擴展軟件包源和ansible軟件包:
# yum -y install epel-release
# yum clean all
# yum makecache
# yum -y install ansible
2.編輯ansible配置文件:(設置無密碼登錄)
3.在三台虛擬機上執行創建密鑰命令
# ssh-keygen
會生成兩個文件,公鑰和私鑰
4.然后將公鑰文件拷貝在測試機上並指定路徑(路徑是規定,就得這么寫)
# scp id_rsa.pub root@192.168.29.138:/root/.ssh/authorized_keys
測試:ssh連接客戶機ip,不需要輸入密碼就成功!
# ssh 客戶機ip
# ssh 192.168.29.139
5.配置文件:/etc/ansible/hosts:記載着需要管理的主機的信息
添加組:
[xxxx] ——可以隨意命名,但是后期要調用,盡量有象征性的命名;
192.168.29.137 ——需要管理的客戶機的IP(也可以寫域名)
192.168.29.138 ——需要管理的客戶機的IP
6.測試:查看管理的兩個主機通不通
# ansible group -m ping
7.ansible的簡單命令使用:
·ansible-doc -l #查看支持的模塊(命令)
·ansible-doc -s yum #查看yum模塊用法
·nsible命令應用基礎
ansible <host-pattern> [options]
-f forks:啟動並發線程數
-m model_name:要使用的模塊
-a args:特有的參數
·查看client端是否正常ping通
ansible all -m ping
·查看客戶端信息
ansible group -m setup
格式:ansible 組名/all -m 指定模塊 -a '操作'
·copy服務器的1.sh文件到cient端的指定路徑下
ansible group -m copy -a 'src=/root/1.sh dest=/root/test'
·創建test用戶
ansible group -m user -a "name=test state=present"
·刪除test用戶
ansible group -m user -a "name=test state=absent"
·yum安裝
ansible group -m yum -a 'name=tree state=latest'
·停止httpd服務
ansible group -m service -a 'name=httpd state=stopped enabled=no'
·運行腳本
ansible group -m script -a '/tmp/test.sh'
·查看時間,是ansible默認模塊,可以不指定模塊。
ansible group -m command -a 'date'
playbook劇本:
playbook是運用ansible的一種非常強大的方式,是由多個play組成。
簡單來說,playbooks 是一種簡單的配置管理系統與多機器部署系統的基礎.與現有的其他系統有不同之處,且非常適合於復雜應用的部署.
一下范例中的格式必須嚴格遵守,必須的必。
例一:基礎
例二:變量
定義變量: vars
變量名=變量
調用變量:{{ 變量名 }}
例三:迭代
whith_item:要寫在當前name的最下面
例四:觸發器notify
例五:模板文件templates
先復制一個httpd.conf文件在主server任意目錄下,
修改配置文件,調用變量,將端口號改為 {{ port }}
修改配置文件:/etc/ansible/hosts,指定兩個客戶機的端口
在兩個客戶端 ss -tnl 查看端口:
例六:單個任務執行tags
調用:ansible xxx.yml tags='add_user'
例七:角色roles:代碼復用
mkdir -pv ansible_playbooks/roles/{webservers,dbservers}/{tasks,files,templates,meta,handlers,vars}
拓展:epel源 EPEL 是yum的一個軟件源,里面包含了許多基本源里沒有的軟件了,但在我們在使用epel時是需要安裝它才可以了,EPEL,即Extra Packages for Enterprise Linux的簡稱,是為企業級Linux提供的一組高質量的額外軟件包,
安裝之前:yum repolist
安裝后:軟件包多了很多