天天看點

Ansible自動化運維

Ansible中使用的不同角色(使用者,Ansible工具集,作用對象)

lnventory是Ansible管理主機資訊的配置檔案,預設存放在/etc/ansible/hosts中。

Ansible工具集包含(lnventrol,Modules,Pluginx和APL)

lnventrol:管理主機的清單

Modules:執行指令子產品

APl:接口

Ansible:核心執行工具

直接實驗!

三台linux伺服器,其中一台Ansible伺服器。

分别為192.168.1.1 192.168.1.2 192.168.1.3

Ansible自動化運維

以一台為例,關閉防火牆,selinux,

伺服器上配置如下:

一,yum安裝Ansible

Ansible自動化運維
Ansible自動化運維

二,進入配置檔案加上節點ip

vim /etc/ansible/hosts

Ansible自動化運維

管理的主機ip

三,建立ssh免互動式登入(就是直接登入不需要密碼)

(1)從ansible主機上生成密鑰對

Ansible自動化運維

(2)複制公鑰到倆個要管理的主機(這裡就示範一個)

Ansible自動化運維

然後輸入:ssh 192.168.1.2直接就能切換過去,不需要密碼

(3)檢查所有之際是否存活,指令如下

Ansible自動化運維

·一般會用三種顔色來表示執行的結果:紅色,綠色

其中:紅色表示執行過程有異常,表示執行後目标有變化,綠色表示執行成功且沒有對目标主機做修改。

(4)command子產品

command子產品在遠端主機執行指令,不支援管道符,重定向等shell的特性

Ansible自動化運維

顯示出倆個主機的使用者

(5)shell子產品

shell子產品在遠端主機執行指令,和command子產品的差別在于它支援shell特性,如管道符,重定向等

Ansible自動化運維

web是清單裡面包括了倆個主機(可以多個,在清單裡添加就可以)在倆太主機/tmp下建立了倆個HELLOW,txt的檔案

(6)copy子產品

用于複制指定主機的檔案到别的主機

dest:指出目标檔案的位置,

src:指出源檔案的路徑

Ansible自動化運維

在本主機上建立個目錄直接複制到倆個節點上的/tmp下

(7)hostname子產品

用于遠端管理主機的主機名

Ansible自動化運維

把主機名改為了asd

(8)yum子產品

用于對遠端主機管理程式包前提要安裝的主機必須配置好yum,這隻是提供指令遠端,比如安裝http,指令如下,

state=(present,latest,absent )(安裝,安裝最新,解除安裝)

Ansible自動化運維

(9)service子產品

用與管理遠端主機上的服務,開啟,關閉,檢視或開機自啟

Ansible自動化運維

(10)user子產品

用于管理遠端主機的使用者賬号比如建立使用者,uid号,使用者的組,使用者的附加組

Ansible自動化運維

四,Playbook配置檔案

編寫腳本來管理遠端主機

ansible腳本必須對齊

提前先修改一下配置檔案:vim /etc/ansible/hosts

Ansible自動化運維
Ansible自動化運維

标準的

Ansible自動化運維

這是文法檢測,顯示下面的意思是沒有錯誤

這是建立使用者的腳本,如下:---

hosts: web1

remote_user: root

tasks:

name: adduser

user: name=user2 state=present

tags:

aaa

name: addgroup

group: name=root system=yes

bbb

hosts: web2

name: copy file to web

copy: src=/etc/passwd dest=/home

ccc

...

執行腳本

Ansible自動化運維

五,觸發器

編寫腳本更改遠端主機的端口号并重新啟動

name: change port

command: sed -i 's/Listen\ 80/Listen\ 8080/g' /etc/httpd/conf/httpd.conf

notify:

restart httpd server

handlers:

Ansible自動化運維

name: install mariadb

yum: name=mariadb-server state=present

name: move config file

shell: "[ -e /etc/my.cnf ]&& mv /etc/my.cnf /etc/my.cnf.bak"

name: provide a new config file

copy: src=my.cnf dest=/etc/my.cnf

name: reload mariadb

shell: systemctl restart mariadb

name: create database testdb

shell: mysql -u root -e "create database testdb;grant all on testdb.* to'test'@'192.168.8.%' identified by 'test123';flush privileges;"

restart mariadb

句号表示 -

然後進入hanglers檔案夾中編寫和腳本

Ansible自動化運維

内容為

name: restart mariadb

service: name=mariadb state=restarted

再進入files檔案夾中複制mysql配置檔案

Ansible自動化運維

最後進入ansible檔案夾中建立腳本

Ansible自動化運維

最後啟動腳本

倆個主機就有mysql資料庫裡面有一個testdb的表

實驗完成