国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Linux|Centos|Ubuntu|系統進程|Fedora|注冊表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服務器之家 - 服務器系統 - Linux - 深入淺析Linux輕量級自動運維工具-Ansible

深入淺析Linux輕量級自動運維工具-Ansible

2022-02-17 20:10paul_hch Linux

這篇文章主要介紹了Linux輕量級自動運維工具-Ansible的相關知識,需要的朋友可以參考下

轉自

linux輕量級自動運維工具-ansible淺析 - ~微風~ - 51cto技術博客

http://weiweidefeng.blog.51cto.com/1957995/1895261

ansible是什么?

深入淺析Linux輕量級自動運維工具-Ansible

ansible架構圖

深入淺析Linux輕量級自動運維工具-Ansible

ansible特性

模塊化:調用特定的模塊,完成特定的任務;

基于python語言研發,由paramiko, pyyaml和jinja2三個核心庫實現;

部署簡單:agentless;

支持自定義模塊,使用任意編程語言;

強大的playbook機制;

冪等性;

安裝及程序環境:

程序:

ansible

ansible-playbook

ansible-doc

配置文件:

/etc/ansible/ansible.cfg

主機清單:

/etc/ansible/hosts

插件目錄:

/usr/share/ansible_plugins/

安裝ansible

深入淺析Linux輕量級自動運維工具-Ansible

安裝依賴包

深入淺析Linux輕量級自動運維工具-Ansible

ansible命令的使用:

usage: ansible <host-pattern> [options]

常用選項:

-m mod_name

-a mod_args

配置host inventory:

/etc/ansible/hosts

[group_id]

host_pattern1

host_pattern2

示例:

首先對此文件進行備份操作,以防后面需要用到默認配置文件

深入淺析Linux輕量級自動運維工具-Ansible

進入到/etc/ansible/hosts文件,此處綠色光標以下的內容是沒有用的,都是示例,可以刪除掉,然后添加我們下面實驗操作用到的主機。

深入淺析Linux輕量級自動運維工具-Ansible

添加一組websrvs服務器,以用于下面的測試

深入淺析Linux輕量級自動運維工具-Ansible

測試主機連通性

這里報錯是因為實驗用的主機交換其他兩臺主機的公鑰/私鑰的原因導致的

深入淺析Linux輕量級自動運維工具-Ansible

實驗ssh免密碼登陸設置

生成私鑰和公鑰ssh-keygen -t rsa -p ''

深入淺析Linux輕量級自動運維工具-Ansible

復制公鑰文件問authorized_keys

深入淺析Linux輕量級自動運維工具-Ansible

把公鑰傳送到其他主機

深入淺析Linux輕量級自動運維工具-Ansible

在68的主機上面可以看見公鑰已經傳送過來了,并且確認文件的權限是否正確

深入淺析Linux輕量級自動運維工具-Ansible

重復以上操作把公鑰發送給69的主機

深入淺析Linux輕量級自動運維工具-Ansible

然后重新執行ansible的ping模塊命令查看該兩臺主機的連通性

可以發現此時已經成功,那么下面就開始介紹ansilbe的其他模塊

深入淺析Linux輕量級自動運維工具-Ansible

最后記得利用ansible同步一下所有主機的時間,以免某主機的時間有錯誤,后面看日志起來會造成混亂

深入淺析Linux輕量級自動運維工具-Ansible

ansible模塊:

獲取模塊列表:ansible-doc -l

獲取指定模塊的使用幫助:ansible-doc -s mod_name

常用模塊:

ping模塊:探測目標主機是否存活;

深入淺析Linux輕量級自動運維工具-Ansible

示例:測試所有的主機的連通性

深入淺析Linux輕量級自動運維工具-Ansible

command模塊:在遠程主機執行命令;

深入淺析Linux輕量級自動運維工具-Ansible

示例1:讓所有主機同步時間

此處沒有給出指定的-m command命令,是因為ansible的模塊默認就是command

深入淺析Linux輕量級自動運維工具-Ansible

示例2:讓每一臺主機都執行uname -r命令

深入淺析Linux輕量級自動運維工具-Ansible

示例3:在主機上面都創建一個用戶

深入淺析Linux輕量級自動運維工具-Ansible

查看兩臺主機是否已經創建該用戶

深入淺析Linux輕量級自動運維工具-Ansible

深入淺析Linux輕量級自動運維工具-Ansible

深入淺析Linux輕量級自動運維工具-Ansible

查看用戶信息:

深入淺析Linux輕量級自動運維工具-Ansible

幫這兩個用戶改密碼,此處需要注意的是,雖然用下面的命令看似執行成功,但是當我們驗證的時候,就會發現密碼錯誤了,這是因為ansible的command模塊并不支持管道等輸出,所以下面介紹另外一個ansible的模塊shell

深入淺析Linux輕量級自動運維工具-Ansible

深入淺析Linux輕量級自動運維工具-Ansible

shell模塊:在遠程主機上調用shell解釋器運行命令,支持shell的各種功能,例如管道等

注意:command和shell模塊的核心參數直接為命令本身;而其它模塊的參數通常為“key=value”格式;

深入淺析Linux輕量級自動運維工具-Ansible

示例:批量修改其他主機的特定用戶的密碼

深入淺析Linux輕量級自動運維工具-Ansible

此時可以發現已經可以登陸成功

深入淺析Linux輕量級自動運維工具-Ansible

copy模塊:復制文件到遠程主機

用法:

(1) 復制文件

-a "src=\'#\'" "

(2) 給定內容生成文件

-a "content= dest= "

其它參數:mode, owner, group, ...

深入淺析Linux輕量級自動運維工具-Ansible

示例:復制文件到其他主機

此處創建一個測試文件

深入淺析Linux輕量級自動運維工具-Ansible

復制文件到其他主機

下面紅色的報錯信息是,如果要傳送文件,該主機的指定目錄需要存在,如果不存在,就是提示錯誤

深入淺析Linux輕量級自動運維工具-Ansible

創建對應的目錄

深入淺析Linux輕量級自動運維工具-Ansible

重新傳送文件,已經沒有錯誤提示,但是此處也可以看見,如果文件已經存在,則原文件會被覆蓋掉,并且此處也沒有任何提示覆蓋文件的信息,所以操作的時候就需要注意了,以免覆蓋掉重要的文件

深入淺析Linux輕量級自動運維工具-Ansible

驗證文件

深入淺析Linux輕量級自動運維工具-Ansible

file模塊:設置文件的屬性

用法:

(1) 創建目錄:

-a "path= state=directory"

(2) 創建鏈接文件:

-a "path= src=\'#\'" /p>

(3) 刪除文件:

-a "path= state=absent“

深入淺析Linux輕量級自動運維工具-Ansible

示例:修改文件的權限和屬主

深入淺析Linux輕量級自動運維工具-Ansible

驗證文件

深入淺析Linux輕量級自動運維工具-Ansible

示例:創建文件的軟連接

深入淺析Linux輕量級自動運維工具-Ansible

驗證文件

深入淺析Linux輕量級自動運維工具-Ansible

設置文件的狀態為absent(即刪除文件)

深入淺析Linux輕量級自動運維工具-Ansible

驗證

深入淺析Linux輕量級自動運維工具-Ansible

fetch模塊:從遠程主機拿文件

深入淺析Linux輕量級自動運維工具-Ansible

示例:從10.1.156.69主機拿一個文件

深入淺析Linux輕量級自動運維工具-Ansible

當抓去一堆文件的時候,也會創建對應的ip地址的目錄,以區分文件

深入淺析Linux輕量級自動運維工具-Ansible

cron模塊:管理計劃任務條目

用法:

?
1
2
3
4
5
6
7
8
9
10
-a ""
minute=
hour=
day=
month=
weekday=
job=
name=
user=
state={present|absent}

深入淺析Linux輕量級自動運維工具-Ansible

示例:創建一個同步時間的計劃任務,每5分鐘同步一下服務器的時間

深入淺析Linux輕量級自動運維工具-Ansible

驗證任務

深入淺析Linux輕量級自動運維工具-Ansible

示例:刪除計劃任務

深入淺析Linux輕量級自動運維工具-Ansible

驗證

深入淺析Linux輕量級自動運維工具-Ansible

hostname模塊:管理主機名

用法:

name=

深入淺析Linux輕量級自動運維工具-Ansible

示例:修改主機名

深入淺析Linux輕量級自動運維工具-Ansible

深入淺析Linux輕量級自動運維工具-Ansible

yum模塊:使用yum命令完成程序包管理

用法:

-a ""

(1) name= state={present|latest}

(2) name= state=absent

深入淺析Linux輕量級自動運維工具-Ansible

示例:安裝指定包

此實驗,首先,確定主機的yum源是可用的,否則實驗會失敗

深入淺析Linux輕量級自動運維工具-Ansible

安裝samba包

深入淺析Linux輕量級自動運維工具-Ansible

驗證

深入淺析Linux輕量級自動運維工具-Ansible

刪除samba安裝包

深入淺析Linux輕量級自動運維工具-Ansible

已經沒有安裝的字眼了

深入淺析Linux輕量級自動運維工具-Ansible

service模塊:服務管理

用法:

?
1
2
3
4
5
6
7
8
-a ""
name=
state=
started
stopped
restarted
enabled=
runlevel=

深入淺析Linux輕量級自動運維工具-Ansible

示例:開啟主機的httpd服務

首先我們確認httpd服務是關閉的

深入淺析Linux輕量級自動運維工具-Ansible

開啟httpd服務,并且設置為開機啟動

深入淺析Linux輕量級自動運維工具-Ansible

驗證,80端口已經開啟

深入淺析Linux輕量級自動運維工具-Ansible

group模塊:增加或刪除組

用法:

?
1
2
3
4
5
-a ""
name=
state=
system=
gid=

深入淺析Linux輕量級自動運維工具-Ansible

示例:添加一個組

深入淺析Linux輕量級自動運維工具-Ansible

驗證

深入淺析Linux輕量級自動運維工具-Ansible

刪除組

深入淺析Linux輕量級自動運維工具-Ansible

驗證

深入淺析Linux輕量級自動運維工具-Ansible

user模塊:用戶管理

使用格式:

name= : 創建的用戶名

state= : present新增,absent刪除

force= : 刪除用戶的時候刪除家目錄

system= : 創建系統用戶

uid= : 指定uid

shell= : 指定shell

home= : 指定用戶家目錄

深入淺析Linux輕量級自動運維工具-Ansible

示例:增加一個系統用戶

深入淺析Linux輕量級自動運維工具-Ansible

驗證

深入淺析Linux輕量級自動運維工具-Ansible

刪除用戶

深入淺析Linux輕量級自動運維工具-Ansible

setup模塊:收集主機里面的各種信息

深入淺析Linux輕量級自動運維工具-Ansible

示例:收集所有主機的信息

深入淺析Linux輕量級自動運維工具-Ansible

yaml:一種數據序列化工具的語言格式

yaml is a data serialization format designed for human readability and interaction with scripting languages.

深入淺析Linux輕量級自動運維工具-Ansible

數據結構:

key:value

- item1

- item2

- item3

例如{name:jerry, age:21}

playbook

核心元素:

tasks:任務,由模塊定義的操作的列表;

variables:變量

templates:模板,即使用了模板語法的文本文件;

handlers:由特定條件觸發的tasks;

roles:角色;

playbook的基礎組件:

hosts:運行指定任務的目標主機;

remote_user:在遠程主機以哪個用戶身份執行;

sudo_user:非管理員需要擁有sudo權限;

tasks:任務列表

模塊,模塊參數:

格式:

(1) action: module arguments

(2) module: arguments

運行playbook,使用ansible-playbook命令

(1) 檢測語法

ansible-playbook --syntax-check /path/to/playbook.yaml

(2) 測試運行

ansible-playbook -c /path/to/playbook.yaml

--list-hosts

-list-tasks

--list-tags

(3) 運行

ansible-playbook /path/to/playbook.yaml

-t tags, --tags=tags

--skip-tags=skip_tags

--start-at-task=start_at

示例1:定義一個playbook任務來新增用戶和組

定義一個yaml的模板

深入淺析Linux輕量級自動運維工具-Ansible

深入淺析Linux輕量級自動運維工具-Ansible

查查語法有沒有錯誤,沒有提示即表示語法應該沒有問題。

深入淺析Linux輕量級自動運維工具-Ansible

測試運行看看,-c表示僅測試跑一邊,但是不會實際操作

深入淺析Linux輕量級自動運維工具-Ansible

也可以單獨測試某些特定的選項

查看僅影響的主機

深入淺析Linux輕量級自動運維工具-Ansible

查看運行哪些任務

深入淺析Linux輕量級自動運維工具-Ansible

查看哪個任務打標了,這里并沒有任何任務打標記,后面再演示

深入淺析Linux輕量級自動運維工具-Ansible

以上沒有錯誤,開始正式運行該任務

深入淺析Linux輕量級自動運維工具-Ansible

驗證

深入淺析Linux輕量級自動運維工具-Ansible

示例2:定義一個playbook任務來修改文件端口

深入淺析Linux輕量級自動運維工具-Ansible

此步驟里面有安裝httpd的安裝包,其實此處有點多余,因為測試的兩臺主機均已經安裝該服務,此處添加上去是為了演示效果,因為當生產環境中,假如存在一臺服務器沒有該安裝包,那么次處就能幫我們安裝上去,不然的話,漏了這一步,到后面查原因也挺麻煩的

深入淺析Linux輕量級自動運維工具-Ansible

檢查語法問題

深入淺析Linux輕量級自動運維工具-Ansible

先從一臺主機上面把httpd.conf文件拷問來編輯

深入淺析Linux輕量級自動運維工具-Ansible

修改httpd.conf文件

比如修改端口為8080,其他都為默認配置

深入淺析Linux輕量級自動運維工具-Ansible

首先備份好各自主機里面的配置文件,以防后面出錯

深入淺析Linux輕量級自動運維工具-Ansible

檢查備份是否成功

深入淺析Linux輕量級自動運維工具-Ansible

測試運行web.yml,看看有沒有問題,沒有問題的話就正常運行

深入淺析Linux輕量級自動運維工具-Ansible

執行改文件

深入淺析Linux輕量級自動運維工具-Ansible

驗證服務器端口打開沒有,可以看見8080端口已經打開,實驗成功。

深入淺析Linux輕量級自動運維工具-Ansible

handlers的使用:由特定條件觸發的tasks;

格式:

tasks:

- name: task_name

module: arguments

notify: handler_name

handlers:

- name: handler_name

module: arguments

示例:參照上面的例子繼續修改apache的端口

修改端口號為8090

深入淺析Linux輕量級自動運維工具-Ansible

修改原來的web.yml腳本實現操作

深入淺析Linux輕量級自動運維工具-Ansible

檢測語法

深入淺析Linux輕量級自動運維工具-Ansible

測試運行,可以看出,當復制文件過去的時候,會觸發到restart httpd service的handlers任務,所以任務就重啟了,而不是啟動

深入淺析Linux輕量級自動運維工具-Ansible

正式運行

深入淺析Linux輕量級自動運維工具-Ansible

驗證結果,8090端口已經打開,實驗成功

深入淺析Linux輕量級自動運維工具-Ansible

tags:給指定的任務定義一個調用標識;

使用格式:

- name: name

module: arguments

tags: tag_id

示例:執行特定的tags

修改文件的端口為8088

深入淺析Linux輕量級自動運維工具-Ansible

在此前的配置文件上面插入一個標簽instconf

深入淺析Linux輕量級自動運維工具-Ansible

檢查語法

深入淺析Linux輕量級自動運維工具-Ansible

此處可以查看到該yml腳本有一個標簽,影響著websrvs組

深入淺析Linux輕量級自動運維工具-Ansible

測試運行

 

正式運行一下,指定以instconf的標簽運行,所以此處不會顯示器其他多余的信息,包括安裝httpd包和啟動httpd服務

深入淺析Linux輕量級自動運維工具-Ansible

驗證該結果

深入淺析Linux輕量級自動運維工具-Ansible

此處也可以對同一個文件標記多個標簽同時執行

深入淺析Linux輕量級自動運維工具-Ansible

測試運行,因為此處已經安裝了httpd包和文件已經復制過去,所以都是綠色,此處就演示到這里,其他步驟可以參考上面的操作

深入淺析Linux輕量級自動運維工具-Ansible

variables:變量

類型:

內建:

(1) facts

自定義:

(1) 命令行傳遞;

-e var=value

(2) 在hosts inventory中為每個主機定義專用變量值;

(a) 向不同的主機傳遞不同的變量 ;

ip/hostname variable_name=value

(b) 向組內的所有主機傳遞相同的變量 ;

[groupname:vars]

variable_name=value

(3) 在playbook中定義

vars:

- var_name: value

- var_name: value

(4) inventory還可以使用參數:

用于定義ansible遠程連接目標主機時使用的屬性,而非傳遞給playbook的變量;

ansible_ssh_host

ansible_ssh_port

ansible_ssh_user

ansible_ssh_pass

ansible_sudo_pass

...

(5) 在角色調用時傳遞

roles:

- { role: role_name, var: value, ...}

變量調用:

{{ var_name }}

示例1:利用命令行傳遞變量來安裝不同的包

深入淺析Linux輕量級自動運維工具-Ansible

此處{{ pkgname }}表示為一個變量

深入淺析Linux輕量級自動運維工具-Ansible

檢查一下語法,居然報錯了,什么情況?仔細看了即便發現是漏了空格

深入淺析Linux輕量級自動運維工具-Ansible

加上空格

深入淺析Linux輕量級自動運維工具-Ansible

再次檢查,還是還是有報錯的情況,各位不要慌,因為這只是因為還沒有給變量賦值才會報的錯,所以此處報錯是很正常

深入淺析Linux輕量級自動運維工具-Ansible

給變量賦值再跑一遍,此時就不會報錯

深入淺析Linux輕量級自動運維工具-Ansible

修改一下變量,發現也是正常的,此處68因為已經安裝過vsftpd所以就不會執行,所以并不會changed

深入淺析Linux輕量級自動運維工具-Ansible

示例2:在playbook中定義變量

 

測試,也沒有問題的

深入淺析Linux輕量級自動運維工具-Ansible

思考?假如同時利用-e的參數傳遞一個變量的參數的話會怎么樣?

測試結果如下,是-e傳遞的變量參數的優先級更高,這樣的話能避免傳遞參數的時候,因為文本里面定義的優先級更高而出錯?

深入淺析Linux輕量級自動運維工具-Ansible

示例3:在hosts inventory中為每個主機定義專用變量值

深入淺析Linux輕量級自動運維工具-Ansible

深入淺析Linux輕量級自動運維工具-Ansible

刪除掉文檔里面原有的變量

深入淺析Linux輕量級自動運維工具-Ansible

測試,沒有問題

深入淺析Linux輕量級自動運維工具-Ansible

示例4:在hosts inventory中為每個主機定義專用變量值的第二種方法

深入淺析Linux輕量級自動運維工具-Ansible

深入淺析Linux輕量級自動運維工具-Ansible

測試,也是可以的

深入淺析Linux輕量級自動運維工具-Ansible

templates:模板,文本文件,內部嵌套有模板語言腳本(使用jinja2模板語言編寫)

深入淺析Linux輕量級自動運維工具-Ansible

jinja2 is a template engine written in pure python. it provides a django inspired non-xml syntax but supports inline expressions and an optional sandboxed environment.

深入淺析Linux輕量級自動運維工具-Ansible

語法:

字面量:

字符串:使用單引號或雙引號;

數字:整數、浮點數;

列表:[item1, item2, ...]

元組:(item1, item2, ...)

字典:{key1:value1, key2:value2, ...}

布爾型:true/false

算術運算:

+, -, *, /, //, %, **

比較操作:

==, !=, >, <, >=, <=

邏輯運算:and, or, not

執行模板文件中的腳本,并生成結果數據流,需要使用template模塊;

template:

-a " "

src=

dest=

mode=

onwer=

group=

注意:此模板不能在命令行使用,而只能用于playbook;

示例:利用templates模板來設置nginx的定義cpu的數量

首先利用ansible命令獲取當前系統系統的cpu數量

深入淺析Linux輕量級自動運維工具-Ansible

首先備份一下默認的文件

深入淺析Linux輕量級自動運維工具-Ansible

首先在下面的主機傳送一個配置文件過來

深入淺析Linux輕量級自動運維工具-Ansible

編輯該文件,修改此處為上面利用ansible的setup模塊獲取的名稱

深入淺析Linux輕量級自動運維工具-Ansible

重命名該文件為jinja2格式后綴的文件

深入淺析Linux輕量級自動運維工具-Ansible

新建一個playbook文件,為了演示,建立一個ngxsrvs組,雖然看上去都一樣。。。

深入淺析Linux輕量級自動運維工具-Ansible

建立playbook文檔

深入淺析Linux輕量級自動運維工具-Ansible

深入淺析Linux輕量級自動運維工具-Ansible

此處為了演示效果,此處把原來的nginx包卸載掉

深入淺析Linux輕量級自動運維工具-Ansible

確認安裝包卸載掉,并且服務沒在線

深入淺析Linux輕量級自動運維工具-Ansible

檢查playbook的文件有沒語法錯誤

深入淺析Linux輕量級自動運維工具-Ansible

測試運行,此處報錯是因為找不到nginx的服務,所以應該是沒有問題的

深入淺析Linux輕量級自動運維工具-Ansible

正式運行,沒有問題

深入淺析Linux輕量級自動運維工具-Ansible

查看一下端口是否已經打開

深入淺析Linux輕量級自動運維工具-Ansible

重點檢查一下cpu的變量是否有改變,這里可以看到,跟我們ansible_processor_vcpus的值是一樣,這樣符合我們預期,此處就展示完畢

深入淺析Linux輕量級自動運維工具-Ansible

深入淺析Linux輕量級自動運維工具-Ansible

條件測試:when語句:在tasks中使用,jinja2的語法格式;

示例:利用ansible條件測試在centos_6和centos_7的啟動服務

這邊首先增加一臺ip為10.1.156.70的centos7的主機

深入淺析Linux輕量級自動運維工具-Ansible

然后我們利用setup模塊的命令

深入淺析Linux輕量級自動運維工具-Ansible

在7的上面可以找到該行

深入淺析Linux輕量級自動運維工具-Ansible

在6的上面可以找到該行

深入淺析Linux輕量級自動運維工具-Ansible

根據以上的信息,我們就可以創建一個基于條件判斷的playbook文件test.yml

深入淺析Linux輕量級自動運維工具-Ansible

深入淺析Linux輕量級自動運維工具-Ansible

為了演示效果,實驗前把centos6的nginx先卸載掉,此處70的報錯只是因為ssh缺少那邊沒有提供公鑰文件,此處就不再演示

深入淺析Linux輕量級自動運維工具-Ansible

檢查playbook語法有沒有問題

深入淺析Linux輕量級自動運維工具-Ansible

測試運行,沒有報錯,可以看出當執行service nginx start命令時候,只有centos6的主機執行了命令,不過開始那里提示有skipping信息是為什么?centos7開始也提示有skipping信息?但是后面確實是執行成功了,下面正式運行該playbook看看效果。

深入淺析Linux輕量級自動運維工具-Ansible

正式運行,似乎沒有報什么錯誤

深入淺析Linux輕量級自動運維工具-Ansible

看看服務是否已經開啟,此處可見80端口已經開發,應該是沒有問題的,此處就不瀏覽主頁做測試了

深入淺析Linux輕量級自動運維工具-Ansible

循環:迭代,需要重復執行的任務;

對迭代項的引用,固定變量名為"item”,使用with_item屬性給定要迭代的元素;

元素:列表

字符串

字典

基于字符串列表給出元素示例:

示例:基于列表的方式安裝多個安裝包

深入淺析Linux輕量級自動運維工具-Ansible

深入淺析Linux輕量級自動運維工具-Ansible

檢查語法

深入淺析Linux輕量級自動運維工具-Ansible

測試運行,沒有報錯(這里就以69和70兩臺不同的版本的centos來做測試)

深入淺析Linux輕量級自動運維工具-Ansible

正式運行,69的機器報錯了,看了一下原因,是下載php-mbstring的時候出錯了,此處原因應該是虛擬掛載centos6.8的cd1導致的,掛載cd2應該就解決此問題,不過部分安裝包應該是在cd1里面,所以小伙伴們最好找一個安全包都全的yum倉庫

深入淺析Linux輕量級自動運維工具-Ansible

重新配置好yum倉庫,并且把先前安裝的先卸載掉,以配置實驗

深入淺析Linux輕量級自動運維工具-Ansible

此處可以看出來,由于69主機剛報錯了一個,所以所有的包都沒有安裝,7上面倒是都已經安裝過了

深入淺析Linux輕量級自動運維工具-Ansible

重新運行腳本,沒有報錯了

深入淺析Linux輕量級自動運維工具-Ansible

驗證,發現已經安裝上了,此處就不再看其他安裝包的安裝情況了,應該沒有大問題

深入淺析Linux輕量級自動運維工具-Ansible

基于字典列表給元素示例:

示例:創建指定的用戶并屬于指定的組

深入淺析Linux輕量級自動運維工具-Ansible

深入淺析Linux輕量級自動運維工具-Ansible

檢查語法

深入淺析Linux輕量級自動運維工具-Ansible

測試運行,沒有提示有任何變化?

深入淺析Linux輕量級自動運維工具-Ansible

正式運行,可以看見創建了對應的用戶和組

深入淺析Linux輕量級自動運維工具-Ansible

驗證,符合我們預期

深入淺析Linux輕量級自動運維工具-Ansible

角色:roles

以特定的層級目錄結構進行組織的tasks、variables、handlers、templates、files等;

role_name/

files/:存儲由copy或script等模塊調用的文件;

tasks/:此目錄中至少應該有一個名為main.yml的文件,用于定義各task;其它的文件需要由main.yml進行“包含”調用;

handlers/:此目錄中至少應該有一個名為main.yml的文件,用于定義各handler;其它的文件需要由main.yml進行“包含”調用;

vars/:此目錄中至少應該有一個名為main.yml的文件,用于定義各variable;其它的文件需要由main.yml進行“包含”調用;

templates/:存儲由template模塊調用的模板文本;

meta/:此目錄中至少應該有一個名為main.yml的文件,定義當前角色的特殊設定及其依賴關系;其它的文件需要由main.yml進行“包含”調用;

default/:此目錄中至少應該有一個名為main.yml的文件,用于設定默認變量;

在playbook中調用角色的方法:

- hosts: hosts

remote_user: username

roles:

- role1

- role2

- { role: role3, variable: value, ...}

- { role: role4, when: condition }

示例:創建對應的服務目錄下面的模版

深入淺析Linux輕量級自動運維工具-Ansible

首先創建對應的目錄

深入淺析Linux輕量級自動運維工具-Ansible

確認一下目錄是否正確

深入淺析Linux輕量級自動運維工具-Ansible

首先準備一個安裝包,放到nginx/file/目錄下面

深入淺析Linux輕量級自動運維工具-Ansible

新建一個nginx的task模板

深入淺析Linux輕量級自動運維工具-Ansible

大家可以發現此處的模板跟之前的不一樣,比如說,開頭沒有了定義主機、用戶、和task等,此處的task會自行查找/etc/ansible/roles/nginx/task/main.yml的任務(此處文件本身也是在task目錄下面)。再比如說,該處指定的copy命令的src=filename也是相對路徑,其絕對路徑為/etc/ansible/roles/nginx/file/filename。又比如說定義了notify但是這里并沒有handlers,是因為此處定義了的notify的名字會自行去查看該目錄下面即/etc/ansible/roles/nginx/handlers/main.yml里面的handlers。還有template那里,大家有沒發現也是用的相對路徑,此處絕對路徑為在/etc/ansible/roles/nginx/template/nginx.conf.j2。所以大家清楚了嗎?

深入淺析Linux輕量級自動運維工具-Ansible

接著是定義/etc/ansible/roles/nginx/handlers/main.yml

深入淺析Linux輕量級自動運維工具-Ansible

此處的文件就是用來承上面的notify里面為什么沒有定義的handlers的原因,因為已經定義在../handlers/main.yml里面了。

深入淺析Linux輕量級自動運維工具-Ansible

復制nginx.conf文件到templates目錄下面為nginx.conf.j2

深入淺析Linux輕量級自動運維工具-Ansible

編輯里面定義的cpu數量,之前是2,所以此處我們也可以利用算數表達式來控制cpu的數量,比如此處-1,到時候看到的cpu數量應該是為1。

深入淺析Linux輕量級自動運維工具-Ansible

再復制/etc/nginx/conf.d/default.conf到nginx/templates/default.conf.j2

深入淺析Linux輕量級自動運維工具-Ansible

然后編輯此文件

深入淺析Linux輕量級自動運維工具-Ansible

編輯原來的端口號為一個變量值ngxport

深入淺析Linux輕量級自動運維工具-Ansible

此時需要重新編輯task/main.yml文件

深入淺析Linux輕量級自動運維工具-Ansible

主要添加一下內容

深入淺析Linux輕量級自動運維工具-Ansible

此時我們就可以定義變量文件了

深入淺析Linux輕量級自動運維工具-Ansible

比如說定義ngxport的變量為8888

深入淺析Linux輕量級自動運維工具-Ansible

此時所有的元素暫時都足夠了,meta和default的文件夾在此處暫時用不上,然后我們在/etc/ansible/目錄下面創建一個nginx.yml的文件

深入淺析Linux輕量級自動運維工具-Ansible

注意此處的roles里面的nginx要在/etc/ansible.cfg文件里面有對應的設定

深入淺析Linux輕量級自動運維工具-Ansible

編輯查看ansible.cfg文件

深入淺析Linux輕量級自動運維工具-Ansible

可以看見系統默認的roles路徑也是在此處,所以我們去掉#號來啟用它

深入淺析Linux輕量級自動運維工具-Ansible
修改成如下
深入淺析Linux輕量級自動運維工具-Ansible

以上都準備好了以后,檢查一下nginx.yml語法,暫時并沒有報錯

深入淺析Linux輕量級自動運維工具-Ansible

然后測試運行,可以看見此處報錯了,看了一下報錯的原因,是因為找不到/tmp/nginx安裝包,因為只是測試運行,并沒有傳送安裝包到目標主機上面,所以此處報錯是正常的可以不予理會。

深入淺析Linux輕量級自動運維工具-Ansible

下面正式運行該腳本,此處報錯了,原因看了一下,nginx安裝包是el7版本的,在centos6上面并不能安裝。以及handlers出問題了。

深入淺析Linux輕量級自動運維工具-Ansible

此處修改一下tasks/main.yml,以下紅色內容為修改部分,意思就是,centos7系統從遠程復制的安裝包安裝,centos6則直接從yum倉庫源安裝,6和7的nginx的配置文件應該是一樣的,暫時先這么操作實驗看看結果,并且先把centos7系統的nginx安裝包刪除掉,以重新演示效果。notify處的語法錯誤,此處補上。

深入淺析Linux輕量級自動運維工具-Ansible

修改完以上的內容,重新測試運行

可以看出來此處還是有報錯內容,

第一個報錯內容為找不到安裝包,此處是正常的,因為安裝包還是傳過去(上一次運行的時候傳送過去的安裝包我已經刪掉了,所以此處需要重傳)

第二個報錯內容為找不到nginx服務,此處也是正常的,因為nginx安裝包還沒有安裝

深入淺析Linux輕量級自動運維工具-Ansible

正常重新運行一下nginx.yml腳本看看,發現已經沒有報錯的地方了

深入淺析Linux輕量級自動運維工具-Ansible

驗證結果,發現8888端口已經打開

 

深入淺析Linux輕量級自動運維工具-Ansible

cpu數量的設置也跟我們之前配置的是一樣的,實驗到此結束

深入淺析Linux輕量級自動運維工具-Ansible
 

示例2:根據以上內容,修改端口號

當我們寫好模板以后,需要修改端口號,也是非常容易的,而且我們也可以通過在nginx.yml上面通過roles傳遞變量

深入淺析Linux輕量級自動運維工具-Ansible

例如像以下這樣子操作

深入淺析Linux輕量級自動運維工具-Ansible

測試運行一下看看有沒有錯誤,可以看見在復制配置文件和重啟服務那里有了變化,這符合我們預期

深入淺析Linux輕量級自動運維工具-Ansible

正式運行一下看看,能正常運行

 

驗證端口號是否修改成功,看到8080端口,表示操作沒有問題

深入淺析Linux輕量級自動運維工具-Ansible

以上是運行成功了,但是細心的同學會發現,這樣所有程序都跑一遍也麻煩,所以我們可以用之前了解到的標簽來執行特定的操作即可,也可以直接傳遞相應的變量。

 

 

直接傳遞參數測試運行,好像沒有問題

深入淺析Linux輕量級自動運維工具-Ansible

正式運行

深入淺析Linux輕量級自動運維工具-Ansible

查看端口號是否正確,此處可以看見是我們定義的8099端口,測試成功

深入淺析Linux輕量級自動運維工具-Ansible


示例:實現httpd不同主機不同的端口號

首先先把定義的端口號先屏蔽掉

深入淺析Linux輕量級自動運維工具-Ansible
深入淺析Linux輕量級自動運維工具-Ansible

編輯/etc/ansible/hosts文件

 

定義對應的端口號,然后測試

深入淺析Linux輕量級自動運維工具-Ansible

然后記得把nginx.yml文件里面也改回來

 

這里直接運行就不先做測試了,不過一般同學們還是做好測試工作比較好,本人比較懶o.o

深入淺析Linux輕量級自動運維工具-Ansible

驗證端口號,也符合我們預期

深入淺析Linux輕量級自動運維工具-Ansible

 

示例:在同一個yml配置文件里面運行兩個服務模板程序

這里以memcached為例,首先復制memcached的配置文件到對應的templates目錄下來為.j2的文件

深入淺析Linux輕量級自動運維工具-Ansible

memcached服務是依靠設置內存參數來定義的,所以我們得首先用ansible來確認系統的內存變量參數值是什么,并且通過以下圖可以看見兩個系統參數都是一致的。

深入淺析Linux輕量級自動運維工具-Ansible

編輯memcached.j2文件

深入淺析Linux輕量級自動運維工具-Ansible

定義變量參數

深入淺析Linux輕量級自動運維工具-Ansible改成深入淺析Linux輕量級自動運維工具-Ansible

開始定義memcached的任務文件

深入淺析Linux輕量級自動運維工具-Ansible

深入淺析Linux輕量級自動運維工具-Ansible

定義handlers文件

深入淺析Linux輕量級自動運維工具-Ansible
深入淺析Linux輕量級自動運維工具-Ansible

把memcached定義在ngnix.yml文件一同運行

深入淺析Linux輕量級自動運維工具-Ansible
深入淺析Linux輕量級自動運維工具-Ansible

測試運行,只是安裝包還沒有安裝,提示的錯誤都問題不大,是正常的

深入淺析Linux輕量級自動運維工具-Ansible

正式運行

深入淺析Linux輕量級自動運維工具-Ansible

驗證服務是否開啟,且是否設置好預期可用內存

可以看見11211端口已經打開

深入淺析Linux輕量級自動運維工具-Ansible

查看可用內存,原來的數值是970~980多,這里200多,符合除以4的預期效果

深入淺析Linux輕量級自動運維工具-Ansible
/p>

示例:根據不同的系統安裝mysql包

首先定義一個tasks的模板

深入淺析Linux輕量級自動運維工具-Ansible
深入淺析Linux輕量級自動運維工具-Ansible

定義一個yaml調用角色腳本

深入淺析Linux輕量級自動運維工具-Ansible

深入淺析Linux輕量級自動運維工具-Ansible

設置hosts文件添加dbsrvs組

深入淺析Linux輕量級自動運維工具-Ansible

 

測試語法

深入淺析Linux輕量級自動運維工具-Ansible

測試運行調用角色腳本db.yml,應該沒有大問題

深入淺析Linux輕量級自動運維工具-Ansible

正式運行,沒有報任何錯誤

深入淺析Linux輕量級自動運維工具-Ansible

驗證服務是否已經開啟

可以看見mysql和mariadb服務均已經開啟

深入淺析Linux輕量級自動運維工具-Ansible

寫在最后,關于ansible的能最多控制幾臺主機
此處是在配置文件里面定義的,默認是5臺主機,如果把主機的控制的主機調大,估計也要相對應性能的主機當ansible服務器
深入淺析Linux輕量級自動運維工具-Ansible

深入淺析Linux輕量級自動運維工具-Ansible

至此,本博文已經完結,下面總結幾個小點:

1、ansible的playbook.yml文件要求的格式比較嚴格,有時候少了幾個空格,或者空格位置不妥當的時候,系統均默認此格式為錯誤,所以需要小心

2、有時候輸入錯了ansibile不能識別的錯誤,用- - syntax-check或者–check測試文件的時候并不會提示有任何提示,需要實際運行才能會報錯。

3、有一次寫playbook.yml文件的時候,檢查過是沒有問題,但是測試一直出問題,后來把所有重寫一遍就好,也可能是哪里錯了自己沒看見。

總結

以上所述是小編給大家介紹的linux輕量級自動運維工具-ansible,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對服務器之家網站的支持!

原文鏈接:http://www.cnblogs.com/paul8339/p/7063216.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 91精品国产乱码久久久久久久久 | 成人在线不卡 | 黄毛片网站 | 久久尤物免费一区二区三区 | 91精品久久久久久久91蜜桃 | 无码日韩精品一区二区免费 | av中文在线 | 日韩av免费在线观看 | 久久久久99精品 | 精品中文字幕一区二区三区av | 亚洲毛片一区二区 | 黄色片网站在线看 | 黄色片在线 | 国产精品三级久久久久久电影 | 中文字幕免费看 | 美女超碰 | 动漫精品一区二区三区 | 夜夜久久| 91精品久久久久久久久久 | 久久亚洲国产 | 久久99久久99 | 亚洲天堂久久 | 成人午夜精品一区二区三区 | 成人毛片久久 | 日韩成人在线免费视频 | 日本三级中文在线电影 | 久久天天| 福利视频网站 | √天堂8在线网 | 欧美日韩一区二区在线 | 国产精品美女久久久久久久久久久 | 国产区视频 | 综合久久网 | 91亚洲精品一区 | 九九亚洲| 精品国产乱码久久久久久1区2区 | 免费av在线播放 | 中文一区| 亚洲欧美视频一区 | 亚洲精品www久久久久久广东 | 精品一区二区久久久久久久网站 |