ansible運維自動化環境搭建

ansible是開源工具,底層是用python寫的python

ansible也有web界面,能夠直接鼠標點就能夠,可是web界面收費web

因此大部分企業不會用web界面安全

 

 

 

AnsibleAnsible的核心程序服務器

Host Lnventory記錄了每個由Ansible管理的主機信息,信息包括ssh端口,root賬號密碼,ip地址等等。能夠經過file來加載,能夠經過CMDB加載併發

PlaybooksYAML格式文件,多個任務定義在一個文件中,使用時能夠統一調用,「劇本」用來定義那些主機須要調用那些模塊來完成的功能.ssh

Core ModulesAnsible執行任何管理任務都不是由Ansible本身完成,而是由核心模塊完成;Ansible管理主機以前,先調用core Modules中的模塊,而後指明管理Host Lnventory中的主機,就能夠完成管理主機。工具

Custom Modules自定義模塊,完成Ansible核心模塊沒法完成的功能,此模塊支持任何語言編寫。學習

Connection Plugins鏈接插件,Ansible和Host通訊使用測試

 

Ansible的優勢:spa

  • 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

 

安裝後:軟件包多了不少

相關文章
相關標籤/搜索