ansible運維自動化環境搭建


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

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

所以大部分企業不會用web界面

 

 

 

AnsibleAnsible的核心程序

Host Lnventory記錄了每一個由Ansible管理的主機信息,信息包括ssh端口,root帳號密碼,ip地址等等。可以通過file來加載,可以通過CMDB加載

PlaybooksYAML格式文件,多個任務定義在一個文件中,使用時可以統一調用,“劇本”用來定義那些主機需要調用那些模塊來完成的功能.

Core ModulesAnsible執行任何管理任務都不是由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

 

安裝后:軟件包多了很多

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM