欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

自動(dòng)化運(yùn)維工具ansible怎么用

自動(dòng)化運(yùn)維工具ansible怎么用,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。

交口ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場(chǎng)景,ssl證書(shū)未來(lái)市場(chǎng)廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書(shū)銷(xiāo)售渠道,可以享受市場(chǎng)價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書(shū)合作)期待與您的合作!

正文

回到頂部

Ansible playbook 簡(jiǎn)介

playbook 是 ansible 用于配置,部署,和管理被控節(jié)點(diǎn)的劇本。
通過(guò) playbook 的詳細(xì)描述,執(zhí)行其中的一系列 tasks ,可以讓遠(yuǎn)端主機(jī)達(dá)到預(yù)期的狀態(tài)。playbook 就像 Ansible 控制器給被控節(jié)點(diǎn)列出的的一系列 to-do-list ,而被控節(jié)點(diǎn)必須要完成。
也可以這么理解,playbook 字面意思,即劇本,現(xiàn)實(shí)中由演員按照劇本表演,在Ansible中,這次由計(jì)算機(jī)進(jìn)行表演,由計(jì)算機(jī)安裝,部署應(yīng)用,提供對(duì)外服務(wù),以及組織計(jì)算機(jī)處理各種各樣的事情。

回到頂部

Ansible playbook使用場(chǎng)景

執(zhí)行一些簡(jiǎn)單的任務(wù),使用ad-hoc命令可以方便的解決問(wèn)題,但是有時(shí)一個(gè)設(shè)施過(guò)于復(fù)雜,需要大量的操作時(shí)候,執(zhí)行的ad-hoc命令是不適合的,這時(shí)最好使用playbook。
就像執(zhí)行shell命令與寫(xiě)shell腳本一樣,也可以理解為批處理任務(wù),不過(guò)playbook有自己的語(yǔ)法格式。
使用playbook你可以方便的重用這些代碼,可以移植到不同的機(jī)器上面,像函數(shù)一樣,最大化的利用代碼。在你使用Ansible的過(guò)程中,你也會(huì)發(fā)現(xiàn),你所處理的大部分操作都是編寫(xiě)playbook??梢园殉R?jiàn)的應(yīng)用都編寫(xiě)成playbook,之后管理服務(wù)器會(huì)變得十分簡(jiǎn)單。

回到頂部

Ansible playbook格式

1)格式簡(jiǎn)介

playbook由YMAL語(yǔ)言編寫(xiě)。YAML( /?j?m?l/ )參考了其他多種語(yǔ)言,包括:XML、C語(yǔ)言、Python、Perl以及電子郵件格式RFC2822,Clark Evans在2001年5月在首次發(fā)表了這種語(yǔ)言,另外Ingy d?t Net與OrenBen-Kiki也是這語(yǔ)言的共同設(shè)計(jì)者。
YMAL格式是類似于JSON的文件格式,便于人理解和閱讀,同時(shí)便于書(shū)寫(xiě)。首先學(xué)習(xí)了解一下YMAL的格式,對(duì)我們后面書(shū)寫(xiě)playbook很有幫助。以下為playbook常用到的YMAL格式:
1、文件的第一行應(yīng)該以 "---" (三個(gè)連字符)開(kāi)始,表明YMAL文件的開(kāi)始。
2、在同一行中,#之后的內(nèi)容表示注釋,類似于shell,python和ruby。
3、YMAL中的列表元素以”-”開(kāi)頭然后緊跟著一個(gè)空格,后面為元素內(nèi)容。
4、同一個(gè)列表中的元素應(yīng)該保持相同的縮進(jìn)。否則會(huì)被當(dāng)做錯(cuò)誤處理。
5、play中hosts,variables,roles,tasks等對(duì)象的表示方法都是鍵值中間以":"分隔表示,":"后面還要增加一個(gè)空格。
下面是一個(gè)舉例:

---#安裝與運(yùn)行MySQL服務(wù)- hosts: node1  remote_user: root  tasks:  
    - name: install mysql-server package      yum: name=mysql-server state=present    - name: starting mysqld service      service: name=mysql state=started

我們的文件名稱應(yīng)該以.yml結(jié)尾,像我們上面的例子就是mysql.yml。其中,有三個(gè)部分組成:

host部分:使用 hosts 指示使用哪個(gè)主機(jī)或主機(jī)組來(lái)運(yùn)行下面的 tasks ,每個(gè) playbook 都必須指定 hosts ,hosts也可以使用通配符格式。主機(jī)或主機(jī)組在 inventory 清單中指定,可以使用系統(tǒng)默認(rèn)的/etc/ansible/hosts,也可以自己編輯,在運(yùn)行的時(shí)候加上-i選項(xiàng),指定清單的位置即可。在運(yùn)行清單文件的時(shí)候,–list-hosts選項(xiàng)會(huì)顯示那些主機(jī)將會(huì)參與執(zhí)行 task 的過(guò)程中。
remote_user:指定遠(yuǎn)端主機(jī)中的哪個(gè)用戶來(lái)登錄遠(yuǎn)端系統(tǒng),在遠(yuǎn)端系統(tǒng)執(zhí)行 task 的用戶,可以任意指定,也可以使用 sudo,但是用戶必須要有執(zhí)行相應(yīng) task 的權(quán)限。
tasks:指定遠(yuǎn)端主機(jī)將要執(zhí)行的一系列動(dòng)作。tasks 的核心為 ansible 的模塊,前面已經(jīng)提到模塊的用法。tasks 包含 name 和要執(zhí)行的模塊,name 是可選的,只是為了便于用戶閱讀,不過(guò)還是建議加上去,模塊是必須的,同時(shí)也要給予模塊相應(yīng)的參數(shù)。

使用ansible-playbook運(yùn)行playbook文件,得到如下輸出信息,輸出內(nèi)容為JSON格式。并且由不同顏色組成,便于識(shí)別。一般而言
| 綠色代表執(zhí)行成功,系統(tǒng)保持原樣
| 黃色代表系統(tǒng)代表系統(tǒng)狀態(tài)發(fā)生改變
| 紅色代表執(zhí)行失敗,顯示錯(cuò)誤輸出
執(zhí)行有三個(gè)步驟:1、收集facts 2、執(zhí)行tasks 3、報(bào)告結(jié)果
自動(dòng)化運(yùn)維工具ansible怎么用

2)核心元素

Playbook的核心元素:

Hosts:主機(jī)組;
Tasks:任務(wù)列表;
Variables:變量,設(shè)置方式有四種;
Templates:包含了模板語(yǔ)法的文本文件;
Handlers:由特定條件觸發(fā)的任務(wù);

3)基本組件

Playbooks配置文件的基礎(chǔ)組件:

Hosts:運(yùn)行指定任務(wù)的目標(biāo)主機(jī)
remoute_user:在遠(yuǎn)程主機(jī)上執(zhí)行任務(wù)的用戶;
sudo_user
tasks:任務(wù)列表

格式:
  tasks:
    – name: TASK_NAME
     module: arguments
     notify: HANDLER_NAME
     handlers:
    – name: HANDLER_NAME
     module: arguments

模塊,模塊參數(shù)

格式:
  (1) action: module arguments
  (2) module: arguments
  注意:shell和command模塊后面直接跟命令,而非key=value類的參數(shù)列表;

handlers:任務(wù),在特定條件下觸發(fā);接收到其它任務(wù)的通知時(shí)被觸發(fā);

(1) 某任務(wù)的狀態(tài)在運(yùn)行后為changed時(shí),可通過(guò)“notify”通知給相應(yīng)的handlers;
(2) 任務(wù)可以通過(guò)“tags“打標(biāo)簽,而后可在ansible-playbook命令上使用-t指定進(jìn)行調(diào)用;

舉例

① 定義playbook

[root@server ~]# cd /etc/ansible[root@server ansible]# vim nginx.yml---- hosts: web  remote_user: root  tasks:    - name: install nginx      yum: name=nginx state=present    - name: copy nginx.conf      copy: src=/tmp/nginx.conf dest=/etc/nginx/nginx.conf backup=yes      notify: reload    #當(dāng)nginx.conf發(fā)生改變時(shí),通知給相應(yīng)的handlers      tags: reloadnginx   #打標(biāo)簽    - name: start nginx service      service: name=nginx state=started      tags: startnginx   #打標(biāo)簽  handlers:  #注意,前面沒(méi)有-,是兩個(gè)空格    - name: reload      service: name=nginx state=restarted  #為了在進(jìn)程中能看出來(lái)

② 測(cè)試運(yùn)行結(jié)果
寫(xiě)完了以后,我們就可以運(yùn)行了:

[root@server ansible]# ansible-playbook nginx.yml

自動(dòng)化運(yùn)維工具ansible怎么用
現(xiàn)在我們可以看看兩臺(tái)機(jī)器的端口是否開(kāi)啟:

[root@server ansible]# ansible web -m shell -a 'ss -nutlp |grep nginx'192.168.37.122 | SUCCESS | rc=0 >>
tcp    LISTEN     0      128       *:80                    *:*                   users:(("nginx",pid=8304,fd=6),("nginx",pid=8303,fd=6))192.168.37.133 | SUCCESS | rc=0 >>
tcp    LISTEN     0      128       *:80                    *:*                   users:(("nginx",pid=9671,fd=6),("nginx",pid=9670,fd=6))

③ 測(cè)試標(biāo)簽
我們?cè)诶锩嬉呀?jīng)打上了一個(gè)標(biāo)簽,所以可以直接引用標(biāo)簽。但是我們需要先把服務(wù)關(guān)閉,再來(lái)運(yùn)行劇本并引用標(biāo)簽:

[root@server ansible]# ansible web -m shell -a 'systemctl stop nginx'
[root@server ansible]# ansible-playbook nginx.yml -t startnginx

自動(dòng)化運(yùn)維工具ansible怎么用
④ 測(cè)試notify
我們還做了一個(gè)notify,來(lái)測(cè)試一下:
首先,它的觸發(fā)條件是配置文件被改變,所以我們?nèi)グ雅渲梦募械亩丝诟囊幌拢?/p>

[root@server ansible]# vim /tmp/nginx.conf    listen       8080;

然后我們重新加載一下這個(gè)劇本:
自動(dòng)化運(yùn)維工具ansible怎么用
發(fā)現(xiàn)我們執(zhí)行的就是reload段以及我們定義的notify部分。
我們來(lái)看一看我們的端口號(hào):

[root@server ansible]# ansible web -m shell -a 'ss -ntlp | grep nginx'192.168.37.122 | SUCCESS | rc=0 >>
LISTEN     0      128          *:8080                     *:*                   users:(("nginx",pid=2097,fd=6),("nginx",pid=2096,fd=6))192.168.37.133 | SUCCESS | rc=0 >>
LISTEN     0      128          *:8080                     *:*                   users:(("nginx",pid=3061,fd=6),("nginx",pid=3060,fd=6))

可以看出,我們的nginx端口已經(jīng)變成了8080。

4)variables 部分

上文中,我們說(shuō)到了variables是變量,有四種定義方法,現(xiàn)在我們就來(lái)說(shuō)說(shuō)這四種定義方法:

① facts :可直接調(diào)用

上一篇中,我們有說(shuō)到setup這個(gè)模塊,這個(gè)模塊就是通過(guò)調(diào)用facts組件來(lái)實(shí)現(xiàn)的。我們這里的variables也可以直接調(diào)用facts組件。
具體的facters我們可以使用setup模塊來(lái)獲取,然后直接放入我們的劇本中調(diào)用即可。

② 用戶自定義變量

我們也可以直接使用用戶自定義變量,想要自定義變量有以下兩種方式:

通過(guò)命令行傳入

ansible-playbook命令的命令行中的-e VARS, --extra-vars=VARS,這樣就可以直接把自定義的變量傳入。

在playbook中定義變量

我們也可以直接在playbook中定義我們的變量:

vars:
  - var1: value1
  - - var2: value2
舉例

① 定義劇本
我們就使用全局替換把我們剛剛編輯的文件修改一下:

[root@server ansible]# vim nginx.yml

自動(dòng)化運(yùn)維工具ansible怎么用
自動(dòng)化運(yùn)維工具ansible怎么用
這樣一來(lái),我們的劇本就定義完成了。
② 拷貝配置文件
我們想要在被監(jiān)管的機(jī)器上安裝什么服務(wù)的話,就直接在我們的server端上把該服務(wù)的配置文件拷貝到我們的/tmp/目錄下。這樣我們的劇本才能正常運(yùn)行。
我們就以keepalived服務(wù)為例:

[root@server ansible]# cp /etc/keepalived/keepalived.conf /tmp/keepalived.conf

③ 運(yùn)行劇本,變量由命令行傳入

[root@server ansible]# ansible-playbook nginx.yml -e rpmname=keepalived

自動(dòng)化運(yùn)維工具ansible怎么用
④ 修改劇本,直接定義變量
同樣的,我們可以直接在劇本中把變量定義好,這樣就不需要在通過(guò)命令行傳入了。以后想要安裝不同的服務(wù),直接在劇本里把變量修改一下即可。

[root@server ansible]# vim nginx.yml

自動(dòng)化運(yùn)維工具ansible怎么用
⑤ 運(yùn)行定義過(guò)變量的劇本
我們剛剛已經(jīng)把變量定義在劇本里面了?,F(xiàn)在我們來(lái)運(yùn)行一下試試看:

[root@server ansible]# ansible-playbook nginx.yml

自動(dòng)化運(yùn)維工具ansible怎么用
發(fā)現(xiàn)這樣也是可以的~

③ 通過(guò)roles傳遞變量

具體的,我們下文中說(shuō)到 roles 的時(shí)候再詳細(xì)說(shuō)明。這里是 傳送帶

④ Host Inventory

我們也可以直接在主機(jī)清單中定義。
定義的方法如下:

向不同的主機(jī)傳遞不同的變量:

  IP/HOSTNAME varaiable=value var2=value2

向組中的主機(jī)傳遞相同的變量:

  [groupname:vars]
  variable=value

5)模板 templates

模板是一個(gè)文本文件,嵌套有腳本(使用模板編程語(yǔ)言編寫(xiě))。
Jinja2:Jinja2是python的一種模板語(yǔ)言,以Django的模板語(yǔ)言為原本。
模板支持:

字符串:使用單引號(hào)或雙引號(hào);
數(shù)字:整數(shù),浮點(diǎn)數(shù);
列表:[item1, item2, ...]
元組:(item1, item2, ...)
字典:{key1:value1, key2:value2, ...}
布爾型:true/false
算術(shù)運(yùn)算:
  +, -, *, /, //, %, **
比較操作:
  ==, !=, >, >=, <, <=
邏輯運(yùn)算:
  and, or, not

通常來(lái)說(shuō),模板都是通過(guò)引用變量來(lái)運(yùn)用的。

舉例

① 定義模板
我們直接把之前定義的/tmp/nginx.conf改個(gè)名,然后編輯一下,就可以定義成我們的模板文件了:

[root@server ansible]# cd /tmp
[root@server tmp]# mv nginx.conf nginx.conf.j2
[root@server tmp]# vim nginx.conf.j2
    worker_processes  {{ ansible_processor_vcpus }};    listen       {{ nginxport }};

② 修改劇本
我們現(xiàn)在需要去修改劇本來(lái)定義變量:

[root@server ansible]# vim nginx.yml

自動(dòng)化運(yùn)維工具ansible怎么用
需要修改的部分如圖所示。
③ 運(yùn)行劇本
上面的準(zhǔn)備工作完成后,我們就可以去運(yùn)行劇本了:

[root@server ansible]# ansible-playbook nginx.yml -t reloadnginx
PLAY [web] *********************************************************************
TASK [setup] *******************************************************************
ok: [192.168.37.122]
ok: [192.168.37.133]
TASK [copy nginx.conf] *********************************************************
ok: [192.168.37.122]
ok: [192.168.37.133]
PLAY RECAP *********************************************************************
192.168.37.122             : ok=2    changed=0    unreachable=0    failed=0   
192.168.37.133             : ok=2    changed=0    unreachable=0    failed=0

6)條件測(cè)試

when語(yǔ)句:在task中使用,jinja2的語(yǔ)法格式。
舉例如下:

tasks:
- name: install conf file to centos7  template: src=files/nginx.conf.c7.j2  when: ansible_distribution_major_version == "7"
- name: install conf file to centos6  template: src=files/nginx.conf.c6.j2  when: ansible_distribution_major_version == "6"

循環(huán):迭代,需要重復(fù)執(zhí)行的任務(wù);
對(duì)迭代項(xiàng)的引用,固定變量名為"item",而后,要在task中使用with_items給定要迭代的元素列表;
舉例如下:

tasks:- name: unstall web packages  yum: name={{ item }} state=absent  with_items:  - httpd  - php  - php-mysql

7)字典

ansible playbook 還支持字典功能。舉例如下:

- name: install some packages
  yum: name={{ item }} state=present
  with_items:
    - nginx
    - memcached
    - php-fpm
- name: add some groups  group: name={{ item }} state=present
  with_items:
    - group11
    - group12
    - group13
- name: add some users  user: name={{ item.name }} group={{ item.group }} state=present
  with_items:
    - { name: 'user11', group: 'group11' }
    - { name: 'user12', group: 'group12' }
    - { name: 'user13', group: 'group13' }

8)角色訂制:roles

① 簡(jiǎn)介

對(duì)于以上所有的方式有個(gè)弊端就是無(wú)法實(shí)現(xiàn)復(fù)用假設(shè)在同時(shí)部署Web、db、ha 時(shí)或不同服務(wù)器組合不同的應(yīng)用就需要寫(xiě)多個(gè)yml文件。很難實(shí)現(xiàn)靈活的調(diào)用。
roles 用于層次性、結(jié)構(gòu)化地組織playbook。roles 能夠根據(jù)層次型結(jié)構(gòu)自動(dòng)裝載變量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。簡(jiǎn)單來(lái)講,roles就是通過(guò)分別將變量(vars)、文件(file)、任務(wù)(tasks)、模塊(modules)及處理器(handlers)放置于單獨(dú)的目錄中,并可以便捷地include它們的一種機(jī)制。角色一般用于基于主機(jī)構(gòu)建服務(wù)的場(chǎng)景中,但也可以是用于構(gòu)建守護(hù)進(jìn)程等場(chǎng)景中。

② 角色集合

角色集合:roles/
mysql/
httpd/
nginx/
files/:存儲(chǔ)由copy或script等模塊調(diào)用的文件;
tasks/:此目錄中至少應(yīng)該有一個(gè)名為main.yml的文件,用于定義各task;其它的文件需要由main.yml進(jìn)行“包含”調(diào)用;
handlers/:此目錄中至少應(yīng)該有一個(gè)名為main.yml的文件,用于定義各handler;其它的文件需要由main.yml進(jìn)行“包含”調(diào)用;
vars/:此目錄中至少應(yīng)該有一個(gè)名為main.yml的文件,用于定義各variable;其它的文件需要由main.yml進(jìn)行“包含”調(diào)用;
templates/:存儲(chǔ)由template模塊調(diào)用的模板文本;
meta/:此目錄中至少應(yīng)該有一個(gè)名為main.yml的文件,定義當(dāng)前角色的特殊設(shè)定及其依賴關(guān)系;其它的文件需要由main.yml進(jìn)行“包含”調(diào)用;
default/:此目錄中至少應(yīng)該有一個(gè)名為main.yml的文件,用于設(shè)定默認(rèn)變量;

③ 角色定制實(shí)例

1. 在roles目錄下生成對(duì)應(yīng)的目錄結(jié)構(gòu)

[root@server ansible]# cd roles/
[root@server roles]# ls
[root@server roles]# mkdir -pv ./{nginx,mysql,httpd}/{files,templates,vars,tasks,handlers,meta,default}
[root@server roles]# tree
.
├── httpd
│   ├── default
│   ├── files
│   ├── handlers
│   ├── meta
│   ├── tasks
│   ├── templates
│   └── vars
├── mysql
│   ├── default
│   ├── files
│   ├── handlers
│   ├── meta
│   ├── tasks
│   ├── templates
│   └── vars
└── nginx
    ├── default
    ├── files
    ├── handlers
    ├── meta
    ├── tasks
    ├── templates
    └── vars24 directories, 0 files

2. 定義配置文件
我們需要修改的配置文件為/tasks/main.yml,下面,我們就來(lái)修改一下:

[root@server roles]# vim nginx/tasks/main.yml- name: cp  copy: src=nginx-1.10.2-1.el7.ngx.x86_64.rpm dest=/tmp/nginx-1.10.2-1.el7.ngx.x86_64.rpm- name: install  yum: name=/tmp/nginx-1.10.2-1.el7.ngx.x86_64.rpm state=latest- name: conf  template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf  tags: nginxconf  notify: new conf to reload- name: start service  service: name=nginx state=started enabled=true

3. 放置我們所需要的文件到指定目錄
因?yàn)槲覀兌x的角色已經(jīng)有了新的組成方式,所以我們需要把文件都放到指定的位置,這樣,才能讓配置文件找到這些并進(jìn)行加載。
rpm包放在files目錄下,模板放在templates目錄下:

[root@server nginx]# cp /tmp/nginx-1.10.2-1.el7.ngx.x86_64.rpm ./files/
[root@server nginx]# cp /tmp/nginx.conf.j2 ./templates/
[root@server nginx]# tree
.
├── default
├── files
│   └── nginx-1.10.2-1.el7.ngx.x86_64.rpm
├── handlers
├── meta
├── tasks
│   └── main.yml
├── templates
│   └── nginx.conf.j2
└── vars7 directories, 3 files

4. 修改變量文件
我們?cè)谀0逯卸x的變量,也要去配置文件中加上:

[root@server nginx]# vim vars/main.yml
nginxprot: 9999

5. 定義handlers文件
我們?cè)谂渲梦募卸x了notify,所以我么也需要定義handlers,我們來(lái)修改配置文件:

[root@server nginx]# vim handlers/main.yml
- name: new conf to reload
  service: name=nginx state=restarted

6. 定義劇本文件
接下來(lái),我們就來(lái)定義劇本文件,由于大部分設(shè)置我們都單獨(dú)配置在了roles里面,所以,接下來(lái)劇本就只需要寫(xiě)一點(diǎn)點(diǎn)內(nèi)容即可:

[root@server ansible]# vim roles.yml 
- hosts: web  remote_user: root  roles:    - nginx

7. 啟動(dòng)服務(wù)
劇本定義完成以后,我們就可以來(lái)啟動(dòng)服務(wù)了:

[root@server ansible]# ansible-playbook roles.yml
PLAY [web] *********************************************************************
TASK [setup] *******************************************************************
ok: [192.168.37.122]
ok: [192.168.37.133]
TASK [nginx : cp] **************************************************************
ok: [192.168.37.122]
ok: [192.168.37.133]
TASK [nginx : install] *********************************************************
changed: [192.168.37.122]
changed: [192.168.37.133]
TASK [nginx : conf] ************************************************************
changed: [192.168.37.122]
changed: [192.168.37.133]
TASK [nginx : start service] ***************************************************
changed: [192.168.37.122]
changed: [192.168.37.133]
RUNNING HANDLER [nginx : new conf to reload] ***********************************
changed: [192.168.37.122]
changed: [192.168.37.133]
PLAY RECAP *********************************************************************
192.168.37.122             : ok=6    changed=4    unreachable=0    failed=0   
192.168.37.133             : ok=6    changed=4    unreachable=0    failed=0

啟動(dòng)過(guò)后照例查看端口號(hào):

[root@server ansible]# ansible web -m shell -a "ss -ntulp |grep 9999"192.168.37.122 | SUCCESS | rc=0 >>
tcp    LISTEN     0      128       *:9999                  *:*                   users:(("nginx",pid=7831,fd=6),("nginx",pid=7830,fd=6),("nginx",pid=7829,fd=6))192.168.37.133 | SUCCESS | rc=0 >>
tcp    LISTEN     0      128       *:9999                  *:*                   users:(("nginx",pid=9654,fd=6),("nginx",pid=9653,fd=6),("nginx",pid=9652,fd=6))

可以看出我們的劇本已經(jīng)執(zhí)行成功。

看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。

本文標(biāo)題:自動(dòng)化運(yùn)維工具ansible怎么用
轉(zhuǎn)載注明:http://aaarwkj.com/article0/gpjoio.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作電子商務(wù)、網(wǎng)站改版建站公司網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷(xiāo)型網(wǎng)站建設(shè)
亚洲国产精品一区二区av不卡| 国产免费成人黄视频网站| 国产三级av高清一区二区| 日韩av网址在线免费观看| 国产999精品在线观看| 亚洲国产日韩精品久久| 日韩精品专区在线影院重磅| 国产精品18禁一区二区三区| 男人自拍天堂在线视频| 国产极品嫩模在线观看91| 中文字幕人妻出轨一区二区| 久久免费欧美日韩亚洲| 激情少妇一区二区三区| 欧美日韩亚洲国产精品视频 | 国产乱av一区二区三区| 色国产精品一区在线观看| 欧美日韩国产一区在线| 亚洲欧美日韩之国产综合| av基地蜜桃蜜桃蜜桃| 亚洲伦理av在线观看| 欧美伊人久久大综合精品| 国产高清亚洲一区亚洲二区| 免费观看亚洲成人av| 亚洲熟女乱妇爽到高潮| 亚洲欧美午夜福利视频| 好吊毛片一区二区三区| 亚洲精品视频久久免费| 免费av在线观看日韩| 精品特色国产自在自线拍| 亚洲欧美久久一区二区三区| 国产麻豆剧传媒精品av| 日韩亚洲国产欧美在线观看| 婷婷综合伊人久久狠狠| 欧美亚洲中文字幕高清| 青青草免费视频观看在线| 亚洲熟妇丰满多毛的大昊 | 成人久久精品一区二区| 欧美日韩黄片免费在线观看| 欧美老熟妇一区二区三区| 亚洲精品麻豆一区二区| 日本一区二区最新免费|