ansible是開源工具,底層是用python寫的python
ansible也有web界面,能夠直接鼠標點就能夠,可是web界面收費web
因此大部分企業不會用web界面安全
Ansible:Ansible的核心程序服務器
Host Lnventory:記錄了每個由Ansible管理的主機信息,信息包括ssh端口,root賬號密碼,ip地址等等。能夠經過file來加載,能夠經過CMDB加載併發
Playbooks:YAML格式文件,多個任務定義在一個文件中,使用時能夠統一調用,「劇本」用來定義那些主機須要調用那些模塊來完成的功能.ssh
Core Modules:Ansible執行任何管理任務都不是由Ansible本身完成,而是由核心模塊完成;Ansible管理主機以前,先調用core Modules中的模塊,而後指明管理Host Lnventory中的主機,就能夠完成管理主機。工具
Custom Modules:自定義模塊,完成Ansible核心模塊沒法完成的功能,此模塊支持任何語言編寫。學習
Connection Plugins:鏈接插件,Ansible和Host通訊使用測試
Ansible的優勢:spa
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
安裝後:軟件包多了不少