導航:首頁 > 文件管理 > ansible的hosts配置文件詳解

ansible的hosts配置文件詳解

發布時間:2022-09-14 19:39:36

⑴ Ansible安裝配置和基本使用

http://www.tuicool.com/wx/vUfYVfA

一、ansible 安裝

ansible 依賴於python2.6或更高的版本、paramiko、PyYAML及Jinja2。

https://www.python.org/ftp/python/2.7.8/Python-2.7.8.tgz

將python頭文件拷貝到標准目錄,以避免編譯ansible時,找不到所需的頭文件

備份舊版本的python,並符號鏈接新版本的python

修改yum腳本,使其指向舊版本的python,已避免其無法運行

1.1 編譯安裝

解決依賴關系

解壓安裝包

https://github.com/ansible/ansible/archive/v1.7.2.tar.gz

編譯安裝

拷貝配置文件

1.2 rpm包安裝

使用阿里雲鏡像源即可,這里為了方便使用,就直接使用yum安裝了。

Fedora 用戶可直接安裝Ansible, 但RHEL或CentOS用戶,需要 配置 EPEL # yum install -y epel-release # yum install -y ansible

注意:不同版本的ansible的功能差異可能較大。

二、配置

配置文件:/etc/ansible/ansible.cfg

hostfile=/etc/ansible/hosts #指定默認hosts配置的位置 host_key_checking = False #不進行host_key檢查,省去目標key發生變化時輸入(yes/no)的步驟 ask_pass=True # 每次執行ansible命令是否詢問ssh密碼 ask_sudo_pass=True # 每次執行ansible命令時是否詢問sudo密碼

主機清單:/etc/ansible/hosts

程序:ansible、ansible paly-book、ansible-doc

1、將要管理的主機納入 /etc/ansible/hosts配置文件中,可以填寫IP或是主機名

[WebServers] 10.10.10.3 10.10.10.4

2、.基於ssh的方式與被管理的主機進行通信,在管理的主機上(部署ansible的主機上)生成一對非對稱密鑰,將公鑰發給被管理的主機。

a,生成密鑰對:ssh-keygen -t rsa

b,將密鑰發放到要管理的主機:ssh--id -i 10.10.10.3 或 ssh--id -i /root/.ssh/id_rsa.pub [email protected]

3、使用ansible命令測試

[root@wlm yum.repos.d]# ansible all -m ping 10.10.10.4 | SUCCESS => { "changed": false, "ping": "pong" }

三、基本使用

1、常用命令

ansible-doc 命令:獲取模塊列表、模塊使用格式。

ansible-doc -l :獲取列表

ansible-doc -s mole_name:獲取指定模塊信息

2、ansible 命令格式

ansible <host-pattern> [-f forks] [-m mole_name] [-a args]

<host-pattern> 指明管控主機,以模式表示或者直接指定ip,必須事先指定在文件中;all所有

[-f forks] 指明每批管控多少主機,默認是5個主機一批次

[-m mole_name] 使用何種模塊操作,所有操作都需要通過模塊指定

[-a args] 指明模塊專用參數;args 一般是 key=value格式。註:command模塊的參數不是kv模式,而是直接給出要執行的命令。

注意:<host-pattern> 默認讀取/etc/ansible/hosts,也可以指明自定義文件路徑 -iPATH,--inventory=PATH:指明使用的 host inventory文件路徑;

3、常用模塊介紹

1、command模塊:遠程主機上運行命令

例:ansible hosts -m command -a "ls /tmp" 註:command模塊也可以省略。

給遠程主機添加用戶、設置密碼:

ansible hosts -a 'useradd user1'

ansible hosts -a 'echo abc | passwd --stdin user1'

2、shell模塊:遠程主機在shell進程下運行命令,支持shell特性,也支持管道符。

10.10.10.4 | SUCCESS | rc=0 >>

3、模塊:把當前主機文件復制到遠程主機位置,可以指定mode、own、group

10.10.10.4 | SUCCESS => { "changed": true, "checksum": "", "dest": "/root/abc.txt", "gid": 0, "group": "root", "md5sum": "", "mode": "0644", "owner": "ansible", "size": 15, "src": "/root/.ansible/tmp/ansible-tmp-1484639082.19-114656107854348/source", "state": "file", "uid": 0 }

4、cron模塊:在遠程主機指定crontab周期性計劃任務

minute= hour= day= month= weekday= job= name= (必須填寫) state=

ansible all -m cron -a "minute=*/10 job='/sbin/ntpdate 10.10.10.10 & >/dev/null' name=synctime" 可使用crontab -l查看

在管理的主機上可以刪除制定的計劃任務

10.10.10.4 | SUCCESS => { "changed": true, "envs": [], "jobs": [] }

5、fetch模塊:和相反,從遠程主機拷貝文件到本地主機

可以不要flat=yes參數,但作用:

當dest=/root/kel/ ,abc.txt會保存在/root/kel/目錄下

當dest=/root/kel ,會拷貝abc.txt文件,並命名成kel

6、file模塊:file模塊包含了文件、文件夾、超級鏈接類的創建、拷貝、移動、刪除

path=/etc/foo.conf owner=foo group=foo mode=0644

src=/file/to/link/to dest=/path/ro/symlink owner=foo group=foo state=link

src=/tmp/{{item.path}} dest={{item.dest}} state=link with_items:

path=/etc/foo.conf state=touch mode="u=rw,g=w,o=r"

path=/etc/foo.conf state=touch mode="u+w,g-w,o-rw"

7、yum模塊:用於yum安裝安裝和卸載

8、service模塊:服務管理

9、user/group模塊:user模塊管理用戶;group模塊管理group

四、Playbook劇本

playbook 是ansible更強大的配置管理組件,實現基於文本文件編排執行的多個任務,且多次重復執行。playbook組織格式為使用YAML語言來編寫的。

playbook 是由一個或多個「play」組成的列表。play的主要功能在於將事先歸為一組的主機裝扮成事先通過ansible中的task定義好的角色。從根本上講,所謂的task無非是調用ansible的一個mole。將多個play組織在一個playbook中,即可以讓他們聯通起來按事先編排的機制生效。

1、例子:

在ansible主機上的root目錄下創建httpd目錄,將本機的httpd.conf文件拷貝到該目錄下,修改配置文件里的監聽埠是8081

remote_user:root #root前不能有空格

tasks: #任務列表

yum name=httpd state=present #yum後的: 刪除掉

src=/root/httpd/httpd.conf dest=/etc/httpd/conf

service name=httpd state=started

注意:yaml文件中支持#;下面的操作要跟上面的name對齊。

測試:

ansible-playbook --check playbook :只檢測可能會發生的改變,但不真正執行操作

ansible-playbook playbook :直接執行

ansible-playbook --list-hosts :列出運行任務的主機

2、playbook介紹

設置在特定條件下觸發:

a,某任務的狀態在運行後為changed時,可通過「notify」通知給相應的handles;

handles:任務在特定條件下觸發;接收到其他任務的通知是被觸發;

b,任務可以通過「tags」打標簽,而後可在ansible-playbook命令上使用-t指定進行調用;

⑵ OpenShift 升級指南

openshift-ansible 為 OpenShift Origin 集群提供了方便的升級手冊,在 主版本 之間進行升級絕大部分沒有問題。但請注意,從測試版(如 3.7.0-rc.0 -> 3.7.0) 或者小版本(3.6.0 -> 3.6.1) 升級時會有問題。

OpenShift Origin 版本和 openshift-ansible 分支的對照關系表如下:

官方的升級文檔請訪問 https://docs.openshift.org/latest/install_config/upgrading/index.html

主版本之間除 3.7 到 3.9 版本之間允許跨版本進行升級之外,其他主版本之間不允許跨版升級,具體見如下表格:

我們以 3.6 升級至 3.7 為例來說明。

編輯 ansible 配置文件 /etc/ansible/hosts 並將以下屬性並修改為 3.7 版本的相應值。

OpenShift 唯一一次允許跨版本升級是從 3.7.x 升級至 3.9,據官方文檔描述,這個升級過程分為兩個階段:

全程自動升級,無需手工干預。不過,從筆者的升級實踐上看,社區版進行升級時會由於未自動啟用 3.8 的 YUM 軟體源而升級失敗,提示 Package 'origin-3.8*' not found 的錯誤。因此在升級之前,我們需要手工設置一下 Origin 3.8 的 YUM 軟體源。

將文件 CentOS-OpenShift-Origin38.repo 復制到目錄 /etc/yum.repos.d/ 下。文件內容如下:

編輯 ansible 配置文件 /etc/ansible/hosts 並將以下屬性並修改為 3.7 版本的相應值。

小版本升級一般不需要變更 Ansible 的 hosts 文件,除非讀者在之前的安裝時強制指定了 openshift_image_tag 或者 openshift_pkg_version 這兩個變數,那麼您可能需要手工指定兩個版本值或者直接去掉它們。

升級時讀者僅需要找到當前主版本對應的升級手冊運行即可。我們以 3.7 為例,最開始安裝的時候,ansible 自動找到了明細的版本為 3.7.0,後面社區推出了小版本升級包 3.7.1,這時讀者僅需要運行 3.7 對應的升級手冊即可:

⑶ Linux裡面ansible -a命令作用是什麼

Ansible是一款系統運維的批量管理伺服器軟體,下面是批量管理的命令例子:

ansible oldboy -m shell -a 'ps -ef |grep ssh' -k

  1. ansible是命令。

  2. oldboy是主機組(裡麵包含很多機器)。

  3. -m shell,-m是指定模塊,shell就是一個模塊。

  4. -a接模塊對應參數。'ps -ef |grep ssh',就是模塊對應的參數,傳給shell解析處理。

⑷ ansible hosts配置ip重復命令會不會重復執行

尊敬的用戶,您好!很高興為您答疑。
這個文件修改後不會及時生回效,需要您重啟一答下您的網路,如果有必要,建議重啟機器(或虛擬機)。而這個問題與瀏覽器本身無關,主要是因為您系統的設置未生效所致。
希望我的回答對您有所幫助,如有疑問,歡迎繼續咨詢我們。

⑸ 使用ansible v2.0 api怎麼指定hosts

使用ansible v2.0 api怎麼指定hosts
or語句
在C語言中,for語句使用最為靈活,它完全可以取代 while 語句。它的一般形式為:
for(表達式1;表達式2;表達式3) 語句
它的執行過程如下:
1) 先求解表達式1。
2) 求解表達式2,若其值為真(非0),則執行for語句中指定的內嵌語句,然後執行下面第3)步;若其值為假(0),則結束循環,轉到第5)步。
3) 求解表達式3。
4) 轉回上面第2)步繼續執行。
5) 循環結束,執行for語句下面的一個語句。

⑹ 如何安裝和配置Ansible在Ubuntu 16.04

配置管理系統旨在使管理員和操作團隊能夠輕松地控制大量伺服器。 它們允許您從一個中心位置以自動方式控制許多不同的系統。
雖然有可用於Linux系統,如Chef和Puppet許多流行的配置管理系統,這些往往是更復雜的比很多人都希望或需要。Ansible是一個偉大的選擇這些選項,因為它有一個更小的開銷開始。
在本指南中,我們將討論如何在Ubuntu 16.04伺服器上安裝Ansible,並討論如何使用該軟體的一些基礎知識。
Ansible如何工作?
Ansible通過從安裝了Ansible組件的計算機配置客戶端計算機來工作。
它通過普通SSH通道進行通信,以便從遠程計算機檢索信息,發出命令和復制文件。 因此,Ansible系統不需要在客戶端計算機上安裝任何其他軟體。
這是Ansible簡化伺服器管理的一種方法。 任何暴露了SSH埠的伺服器都可以被帶到Ansible的配置傘下,無論它的生命周期處於什麼階段。
您可以通過SSH管理的任何計算機,也可以通過Ansible管理。
Ansible採用模塊化方法,使其易於擴展以使用主系統的功能來處理特定場景。 模塊可以用任何語言編寫,並以標准jsON進行通信。
配置文件主要是以YAML數據序列化格式編寫的,因為它具有表達性和與流行標記語言的相似性。 Ansible可以通過命令行工具或通過其名為Playbooks的配置腳本與客戶端進行交互。
先決條件
要遵循本教程,您需要:
一個Ubuntu的16.04伺服器與Sudo非root用戶和SSH密鑰,您可以通過以下設置初始伺服器設置教程 ,包括第4步
第1步 – 安裝Ansible
要開始探索Ansible作為管理我們的各種伺服器的方法,我們需要在至少一台機器上安裝Ansible軟體。 我們將使用一個Ubuntu 16.04伺服器。
為Ubuntu獲取Ansible的最佳方法是將項目的PPA(個人包存檔)添加到系統中。 我們可以通過鍵入以下命令添加Ansible PPA:
sudo apt-add-repository ppa:ansible/ansible

按ENTER接受PPA增加。
接下來,我們需要刷新系統的包索引,以便它知道PPA中可用的包。 之後,我們可以安裝軟體:
sudo apt-get update
sudo apt-get install ansible

如上所述,Ansible主要通過SSH與客戶端計算機通信。 雖然它當然有能力處理基於密碼的SSH身份驗證,SSH密鑰幫助保持簡單。 您可以按照先決條件中鏈接的教程來設置SSH密鑰(如果您還沒有)。
我們現在擁有通過Ansible管理我們的伺服器所需的所有軟體。
第2步 – 配置Ansible主機
Ansible通過「hosts」文件跟蹤它所知道的所有伺服器。 我們需要先設置此文件,然後才能開始與我們的其他計算機通信。
使用root許可權打開文件,如下所示:
sudo nano /etc/ansible/hosts

你會看到一個文件有很多示例配置,沒有一個將真正為我們工作,因為這些主機組成。 因此,首先,我們通過在每行之前添加一個「#」來注釋掉這個文件中的所有行。
我們將在文件中保留這些示例,以幫助我們進行配置,如果我們希望在將來實現更復雜的場景。
一旦所有的行都注釋掉,我們可以開始添加我們的實際主機。
hosts文件相當靈活,可以通過幾種不同的方式進行配置。 我們將使用的語法看起來像這樣:
主機文件示例
[group_name]
alias ansible_ssh_host=your_server_ip

group_name是一個組織標記,可讓您使用一個字來引用下面列出的任何伺服器。 別名只是一個引用該伺服器的名稱。
所以在我們的場景中,我們想像我們有三個伺服器,我們將要控制與Ansible。 可以通過鍵入以下內容從Ansible伺服器訪問這些伺服器:
ssh root@your_server_ip

如果您已正確設置此密碼,則不應提示您輸入密碼。 我們假設我們的伺服器的IP地址是192.0.2.1 , 192.0.2.2和192.0.2.3 。 我們將設置這使我們可以把這些單獨的host1 , host2和host3 ,或作為一個群體的servers 。
這是我們應該添加到我們的hosts文件來完成這個塊:
[servers]
host1 ansible_ssh_host=192.0.2.1
host2 ansible_ssh_host=192.0.2.2
host3 ansible_ssh_host=192.0.2.3

主機可以在多個組中,組可以為其所有成員配置參數。 讓我們現在嘗試一下。
使用我們當前的設置,如果我們嘗試使用Ansible連接到任何這些主機,命令將失敗(假設您不是以root用戶身份操作)。 這是因為您的SSH密鑰是為遠程系統上的root用戶嵌入的,並且Ansible將默認嘗試作為當前用戶連接。 連接嘗試將獲得此錯誤:
Ansible連接錯誤
host1 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}

在Ansible伺服器,我們使用一個名為演示用戶。 Ansible會嘗試連接到與每個主機ssh demo@server 。 如果演示用戶不在遠程系統上,這將不工作。
我們可以創建一個文件,告訴「伺服器」組中的所有伺服器使用root用戶進行連接。
要做到這一點,我們將創建在Ansible配置結構稱為目錄group_vars 。 在此文件夾中,我們可以為要配置的每個組創建YAML格式的文件:
sudo mkdir /etc/ansible/group_vars
sudo nano /etc/ansible/group_vars/servers

我們可以把我們的配置在這里。 YAML文件以「—」開頭,因此請確保不要忘記該部分。
/ etc / ansible / group_vars / servers
---
ansible_ssh_user: root

保存並在完成後關閉此文件。
如果你想為每個伺服器指定配置細節,而不管組關聯的,你可以在把這些信息在一個文件中/etc/ansible/group_vars/all 。 單個主機可以通過在目錄下創建文件進行配置/etc/ansible/host_vars 。
第3步 – 使用簡單的Ansible命令
現在我們已經設置了主機和足夠的配置詳細信息,以允許我們成功連接到我們的主機,我們可以嘗試我們的第一個命令。
通過鍵入以下命令來ping您配置的所有伺服器:
ansible -m ping all

平滑輸出
host1 | SUCCESS => {
"changed": false,
"ping": "pong"
}

host3 | SUCCESS => {
"changed": false,
"ping": "pong"
}

host2 | SUCCESS => {
"changed": false,
"ping": "pong"
}

這是一個基本測試,以確保Ansible已連接到其所有主機。
「all」表示所有主機。 我們可以很容易地指定一個組:
ansible -m ping servers

我們還可以指定單個主機:
ansible -m ping host1

我們可以通過用冒號分隔它們來指定多個主機:
ansible -m ping host1:host2

該-m ping命令的部分是Ansible指令使用「平」模塊。 這些基本上是可以在遠程主機上運行的命令。 ping模塊以很多方式運行,就像Linux中的正常ping實用程序一樣,而是檢查Ansible連接。
ping模塊不會真正採取任何參數,但我們可以嘗試另一個命令,看看它是如何工作。 我們通過輸入參數傳遞到腳本-a 。
「shell」模塊允許我們向遠程主機發送終端命令並檢索結果。 例如,要找出我們的host1機器上的內存使用情況,我們可以使用:
ansible -m shell -a 'free -m' host1

Shell輸出
host1 | SUCCESS | rc=0 >>
total used free shared buffers cached
Mem: 3954 227 3726 0 14 93
-/+ buffers/cache: 119 3834
Swap: 0 0 0

結論
現在,您應該將您的Ansible伺服器配置為與您要控制的伺服器通信。 我們已驗證Ansible可以與每個主機溝通,我們已經使用了ansible命令來遠程執行簡單的任務。
雖然這是有用的,我們沒有涵蓋Ansible的最強大的功能在這篇文章:Playbooks。 我們已經通過Ansible為我們的伺服器建立了一個很好的基礎,但是當我們介紹如何使用Playbooks來自動化遠程計算機的配置時,我們將在以後的文章中進行大量的工作。

⑺ ansible怎麼配置ssh參數

1. 執行順序
配置文件執行順序:
* ANSIBLE_CONFIG (環境變數)
* ansible.cfg (in the current directory)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg

版本1.5以前的執行順序:
* ansible.cfg (in the current directory)
* ANSIBLE_CONFIG (an environment variable)
* .ansible.cfg (in the home directory)
* /etc/ansible/ansible.cfg

2.配置文件ansible.cfg中的【default】配置項
Action_Plugins(擴展插件存放目錄)
action_plugins = /usr/share/ansible_plugins/action_plugins

Ansible_Managed(插入Ansible模板的字元串)
ansible_managed = Ansible managed: {file} modified on %Y-%m-%d %H:%M:%S by {uid} on {host}

ask_pass(PlayBook是否需要提供密碼,默認為No)
#ask_pass=True

ask_sudo_pass(PlayBook是否需要提供sudo 密碼)

#ask_sudo_pass=True

callback_plugins(回調函數插件存放路徑)
action_plugins = /usr/share/ansible_plugins/action_plugins

connection_plugins(連接插件存放路徑)
action_plugins = /usr/share/ansible_plugins/action_plugins

deprecation_warnings(是否展示警告信息)
deprecation_warnings = True

display_skipped_hosts(是否展示跳過的主機的信息)
#display_skipped_hosts=True

error_on_undefined_vars(執行錯誤時候賦予的變數)
#error_on_undefined_vars=True

executable(默認的Shell)
#executable = /bin/bash

filter_plugins(攔截器插件)
action_plugins = /usr/share/ansible_plugins/action_plugins

forks(最大進程數)
forks=5

hash_behavior(哈希特性,沒事不用去動它)
#hash_behavior=replace

hostfile(資產文件存放位置)
hostfile = /etc/ansible/hosts

host_key_checking(是否檢查SSH key)
host_key_checking=True

jinja2_extensions(JinJa擴展)
jinja2_extensions = jinja2.ext.do,jinja2.ext.i18n

legacy_playbook_variables(PlayBook變數)
legacy_playbook_variables = no

library(Ansible默認庫)
library = /usr/share/ansible

log_path(日誌路徑)
log_path=/var/log/ansible.log

lookup_plugins(插件路徑)
action_plugins = /usr/share/ansible_plugins/action_plugins

mole_name(默認模塊名稱)
mole_name = command

nocolor(輸出樣式)
nocolor=0

nocows(是否使用cowsay列印)
nocows=0

pattern(主機)
hosts=*

poll_interval(pool間隔)
poll_interval=15

private_key_file(私鑰的存放路徑)
private_key_file=/path/to/file.pem

remote_port(遠程連接埠號)
remote_port = 22

remote_tmp(遠程目錄臨時文件夾)
remote_temp = $HOME/.ansible/tmp

remote_user(遠程用戶)
remote_user = root

roles_path(角色路徑)
roles_path = /opt/mysite/roles

sudo_exe(SUDO執行)
sudo_exe=sudo

sudo_flags(SUDO標記)
sudo_flags=-H

sudo_user(sudo用戶)
sudo_user=root

timeout(重連次數)
timeout = 10

transport(傳輸模式)
默認用的smart

vars_plugins(變數插件存放路徑)
action_plugins = /usr/share/ansible_plugins/action_plugins

SSH變數
ssh_args(SSH連接參數)
ssh_args = -o ControlMaster=auto -o ControlPersist=60s

scp_if_ssh(採用SCP還是SFTP進行文件傳輸)
scp_if_ssh=False

⑻ Linux裡面ansible作用是什麼

Ansible是一款簡單的運維自動化工具,只需要使用ssh協議連接就可以來進行系統管理,自動化執行命令,部署等任務。

Ansible的優點

⑼ 使用ansible v2.0 api怎麼指定hosts

ansible2.0的api似乎不復能像以前一樣傳入制一個hosts列表,只能指定某個host文件里的某個組(或者全部組),但是我無法預先寫好一個hosts文件和組,因為要操作哪些伺服器是在web上輸入的。我現在解決的方法是對於傳入的hosts列表,遍歷後寫在一個臨時文件里,Inventory指定這個臨時文件即可。

⑽ ansible總結

ansible是一種自動化運維工具,基於paramiko開發的,並且基於模塊化工作,Ansible是一種集成IT系統的配置管理、應用部署、執行特定任務的開源平台,它是基於python語言,由Paramiko和PyYAML兩個關鍵模塊構建。集合了眾多運維工具的優點,實現了批量系統配置、批量程序部署、批量運行命令等功能.ansible是基於模塊工作的,本身沒有批量部署的能力.真正具有批量部署的是ansible所運行的模塊,ansible只是提供一種框架.ansible不需要在遠程主機上安裝client/agents,因為它們是基於ssh來和遠程主機通訊的.

ansible被定義為配置管理工具,配置管理工具通常具有以下功能:

常用的自動化運維工具技術特性比較:

ansible系統由控制主機和被管理主機組成,控制主機不支持windows平台

部署簡單, 只需要在控制主機上部署ansible環境,被控制端上只要求安裝ssh和python 2.5以上版本,這個對於類unix系統來說相當與無需配置.

Ansible任務執行模式分為以下兩種:

ansible配置文件查找順序

ansible配置文件
ansible 有許多參數,下面我們列出一些常見的參數:

ansible的主要功用在於批量主機操作,為了便捷地使用其中的部分主機,可以在inventory file中將其分組命名。默認的inventory file為/etc/ansible/hosts。
inventory file可以有多個,且也可以通過Dynamic Inventory來動態生成。

Inventory文件格式:

inventory其他的參數

ansible通過ssh實現配置管理、應用部署、任務執行等功能,因此,需要事先配置ansible端能基於密鑰認證的方式聯系各被管理節點。

ansible命令使用語法:

例如:

可以通過 ansible-doc -l 列出所有可用的mole,常用的mole有:

ansible -s <mole-name> 可以查看指定mole的用法,或者參看 官方幫助文檔 :

playbook是由一個或多個「play」組成的列表。play的主要功能在於將事先歸並為一組的主機裝扮成事先通過ansible中的task定義好的角色。從根本上來講,所謂task無非是調用ansible的一個mole。將多個play組織在一個playbook中,即可以讓它們聯同起來按事先編排的機制同唱一台大戲。

下面是一個簡單示例:

playbooks的組成部分

執行過程:

playbook安裝配置apache實戰

ansilbe自1.2版本引入的新特性,用於層次性、結構化地組織playbook。roles能夠根據層次型結構自動裝載變數文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。簡單來講,roles就是通過分別將變數、文件、任務、模塊及處理器放置於單獨的目錄中,並可以便捷地include它們的一種機制。角色一般用於基於主機構建服務的場景中,但也可以是用於構建守護進程等場景中。

一個roles的案例如下所示:

在playbook中,可以這樣使用roles:

也可以向roles傳遞參數:

也可以用條件來使用roles:

ansible運行playbook時會啟動很多ssh連接來執行復制文件,運行命令這樣的操作.openssh支持這樣一個優化,叫做ssh Multiplexing,當使用這個ssh Multiplexing的時候,多個連接到相同主機的ssh回話會共享相同的TCP連接,這樣就只有第一次連接的時候需要進行TCP三次握手.

ansible會默認使用ssh Multiplexing特性,一般不需要更改配置,相關的配置項為:

ansible執行過程中,他會基於調用的模塊生成一個python腳本,然後將python腳本復制到主機上,最後執行腳本.ansible支持一個優化,叫做pipelining,在這個模式下ansible執行腳本時並不會去復制它,而是通過管道傳遞給ssh會話,這會讓ansible的ssh會話從2個減少到1個,從而節省時間.

pipelining默認是關閉的, 因為他需要確認被管理主機上的/etc/sudoers文件中的 requiretty 沒有啟用, 格式如下:

ansible開啟pipelining方法, 修改ansible.cfg配置文件:

ansible playbook會默認先收集fact信息,如果不需要fact數據可以在playbook中禁用fact採集:

也可以全局禁用fact採集:

另一種解決方案就是使用fact緩存,目前ansible支持下面幾種fact緩存:

JSON文件做fact緩存示例
ansible把採集到的fact寫入控制主機的json文件中,如果文件已經存在,那麼ansible不會再去主機上採集fact

啟用JSON文件緩存,修改ansible.cfg文件:

ansible默認並發數是5,可以用下面兩種方法修改並發數:

ansible內置多種雲計算相關模塊,如aws,openstack,docker等,下圖是ansible與docker相關的模塊:

通過playbook和dockerfile相結合的方式生成鏡像, 示例如下:

ansible可以通過docker模塊來操作容器,示例如下:

閱讀全文

與ansible的hosts配置文件詳解相關的資料

熱點內容
開物流網站多少錢 瀏覽:440
6s用哪個版本好 瀏覽:324
數控編程怎麼來的 瀏覽:103
廣西廣電網路的默認ip 瀏覽:191
政府發紅頭文件內容會實現嗎 瀏覽:552
騰訊貴安七星數據中心英文怎麼寫 瀏覽:489
玩火的女孩有幾個版本 瀏覽:113
tvshowtracker安卓版 瀏覽:983
App數據分析應該從哪些緯度 瀏覽:17
到底要不要升級ios92 瀏覽:875
cad2014安裝包安裝文件在哪裡 瀏覽:63
電信密碼無法登錄 瀏覽:820
cad的列印到文件怎麼設置 瀏覽:902
智行app鉑金會員怎麼還有期限 瀏覽:581
win10用子文件夾改名 瀏覽:234
ae鋼筆工具在哪裡 瀏覽:460
gn105數據線插哪裡 瀏覽:916
破鎖屏密碼方法 瀏覽:835
股票數據放哪裡 瀏覽:576
m格式庫文件 瀏覽:279

友情鏈接