ansible安裝

ansible安裝方式

ansible安裝常用兩種方式,yum安裝和pip程序安裝

這裏提供二種安裝方式,任選一種即可:

1、使用yum安裝

yum install epel-release -y
yum install ansible –y

2、 使用pip(python的包管理模塊)安裝

pip install ansible

#如果沒pip,需先安裝pip.yum可直接安裝:
yum install python-pip
pip install ansible

ansible程序結構
安裝目錄

通過使用rpm -ql ansible指令可以查看ansible安裝的所有文件位置!

配置文件目錄:/etc/ansible/
執行文件目錄:/usr/bin/
Lib庫依賴目錄:/usr/lib/pythonX.X/site-packages/ansible/
Help文檔目錄:/usr/share/doc/ansible-X.X.X/
Man文檔目錄:/usr/share/man/man1

ansible配置文件的查找順序

(1)、檢查環境變量ANSIBLE_CONFIG指向的路徑文件(export ANSIBLE_CONFIG=/etc/ansible.cfg )
(2)、~/.ansible.cfg,檢查當前目錄(/etc/ansible)下的ansible.cfg配置文件
(3)、/etc/ansible.cfg 檢查etc目錄的配置文件

ansible配置文件

設置/etc/ansible/ansible.cfg配置參數,ansible有許多參數,下面列出常用的參數:

inventory:#這個參數表示資源清單inventory文件的位置,資源清單就是一些ansible需要連接管理的主 機列表。這個參數的配置實例如下:

inventory = /etc/ansible/hosts

library: ansible的操作動作,無論是本地或遠程,都使用一小段代碼來執行,這小段代碼稱爲模塊,這個library參數就是指向存放ansible模塊的目錄。配置實例如下:

library = /usr/share/ansible

ansible支持多個目錄方式,只要用冒號“ : ”隔開就可以,同時也會檢查當前執行playbook位置下的./library目錄。

forks:設置默認情況下ansible最多能有多少個進程同時工作, 從ansible 1.3開始,fork數量默認自動設置爲主機數量或者潛在的主機數量,默認設置最多5個進程並行處理。具體需要設置多少個,可以根據控制主機的性能和被管節點的數量來確定,可能是 50或100。默認值5是非常保守的值,配置實例如下:

forks = 5

sudo_user:這是設置默認執行命令的用戶,也可以在playbook中重新設置這個參數。配置實例如下:

sudo_user = root
remote_port:這是指定連接被管節點的管理端口,默認是22。除非設置了特殊的SSH端口,不然這個參數一般是不需要修改的。
配置實例如下:

remote_port = 22
host_key_checking:這是設置是否檢查SSH主機的密鑰。可以設置爲True或False,關閉後第一次連接沒有提示配置實例

host_key_checking = False
timeout:這是設置SSH連接的超時間隔,單位是秒。配置實例如下:

timeout = 60

log_path:ansible系統默認是不記錄日誌的,如果想把ansible系統的輸出記錄到日誌文件中,需要設置log_path來指定一個存儲ansible日誌的文件。配置實例如下:

log_path = /var/log/ansible.log

1

另外需要注意,執行ansible的用戶需要有寫入日誌的權限,模塊將會調用被管節點的syslog來記錄。
ansible主機清單

ansible主機清單設置
編輯/etc/ansible/hosts:

[root@CentOS7-master ~]# vim /etc/ansible/hosts #定義方式:

###1、直接指明主機地址或主機名:
green.example.com
blue.example.com
172.17.250.230
172.17.254.180
172.17.254.165

###2、定義一個主機組[組名]把地址或主機名加進去
[webservers]
172.17.254.180
172.17.254.165
#組成員可以使用通配符來匹配,如下 172.17.254.[1:6] #表示匹配從172.17.254.1——172.17.254.6的主機

ansible配置公私鑰
配置ansible使用公鑰驗證

配置這個的原因是爲了方便ansible可以實現無祕訪問控制其他機器,是實現自動化的前提。這一步可以再配置好ansible.cfg文件以及hosts主機清單後執行。

雖然ansible支持其他主機認證方式,但是我們最常用的的還是基於祕鑰的認證:
1、首先生成祕鑰

##執行下條指令後一路回車即可!
[root@CentOS7-master ~]# ssh-keygen -t rsa

2、然後向主機分發祕鑰:

##所有添加到主機清單中的IP地址或者主機名,全部都要用下條指令執行一遍。
[root@CentOS7-master ~]# ssh-copy-id root@主機名或IP地址

3、如果出現以下情況:

ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
-bash: ssh-copy-id: command not found

#請嘗試:
yum -y install openssh-clientsansible

ansible常用命令
ansible命令集

/usr/bin/ansible # Ansibe AD-Hoc 臨時命令執行工具,常用於臨時命令的執行

/usr/bin/ansible-doc # ansible 模塊功能查看工具

/usr/bin/ansible-galaxy # 下載/上傳優秀代碼或Roles模塊 的官網平臺,基於網絡的

/usr/bin/ansible-playbook # ansible 定製自動化的任務集編排工具

/usr/bin/ansible-pull # ansible遠程執行命令的工具,拉取配置而非推送配置(使用較少,海量機器時使用,對運維的架構能力要求較高)

/usr/bin/ansible-vault # ansible 文件加密工具

/usr/bin/ansible-console # ansible基於Linux Consoble界面可與用戶交互的命令執行工具

ansible命令詳解

###命令格式:
ansible <host-pattern> [-f forks] [-m module_name] [-a args]

###我們可以通過 ansible -h查看幫助
###本段中所有以“**”開頭的參數,均表示是重要的
[root@CentOS7-master ~]# ansible -h
Usage: ansible <host-pattern> [options] Options:

** -a MODULE_ARGS, --args=MODULE_ARGS
模塊的參數,如果執行默認COMMAND的模塊,即是命令參數,如:“date”,“pwd”等等 module arguments 模塊參數

-k, --ask-pass
ask for SSH password 登錄密碼,提示輸入SSH密碼而不是假設基於密鑰的驗證

--ask-su-pass
ask for su password su切換密碼

-K, --ask-sudo-pass
ask for sudo password 提示密碼使用sudo,sudo表示提權操作

--ask-vault-pass
ask for vault password

-B SECONDS, --background=SECONDS
run asynchronously, failing after X seconds (default=N/A)後臺運行超時時間

** -C, --check
don‘t make any changes; instead, try to predict some of the changes that may occur #只是測試一下會改變什麼內容,不會真正去執行;相反,試圖預測一些可能發生的變化

-c CONNECTION, --connection=CONNECTION
connection type to use (default=smart) #連接類型使用

** -f FORKS, --forks=FORKS
specify number of parallel processes to use (default=5) #並行任務數。NUM被指定爲一個整數,默認是5

-h, --help
show this help message and exit 打開幫助文檔API

** -i INVENTORY, --inventory-file=INVENTORY
specify inventory host file (default=/etc/ansible/hosts) #指定庫存主機文件的路徑,默認爲/etc/ansible/hosts

** --list-hosts
outputs a list of matching hosts; does not execute anything else

** -m MODULE_NAME, --module-name=MODULE_NAME
module name to execute (default=command) #執行模塊的名字,默認使用 command 模塊,所以如果是隻執行單一命令可以不用 -m參數

-M MODULE_PATH, --module-path=MODULE_PATH
specify path(s) to module library (default=/usr/share/ansible/) #要執行的模塊的路徑,默認爲/usr/share/ansible/

-o, --one-line
condense output #壓縮輸出,摘要輸出.嘗試一切都在一行上輸出。

-P POLL_INTERVAL, --poll=POLL_INTERVAL
set the poll interval if using -B (default=15) #調查背景工作每隔數秒。需要- b

--private-key=PRIVATE_KEY_FILE
use this file to authenticate the connection #私鑰路徑,使用這個文件來驗證連接

** -S, --su
run operations with su #用 su 命令

** -R SU_USER, --su-user=SU_USER
run operations with su as this user (default=root) #指定SU的用戶,默認是root用戶

** -s, --sudo
run operations with sudo (nopasswd)

** -U SUDO_USER, --sudo-user=SUDO_USER
desired sudo user (default=root)(deprecated, use become) #sudo到哪個用戶,默認爲 root

** -T TIMEOUT, --timeout=TIMEOUT
override the SSH timeout in seconds (default=10) #指定SSH默認超時時間, 默認是10S

-t TREE, --tree=TREE
log output to this directory #將日誌內容保存在該輸出目錄,結果保存在一個文件中在每臺主機上。

** -u REMOTE_USER, --user=REMOTE_USER
connect as this user (default=root) #遠程用戶, 默認是root用戶

--vault-password-file=VAULT_PASSWORD_FILE
vault password file

** -v, --verbose
verbose mode (-vvv for more, -vvvv to enable 詳細信息connection debugging)

--version
show program's version number and exit #輸出ansible的版本

ansible-doc命令

ansible-doc指令是用來查看ansible所支持的模塊的文件信息的,並且支持shell!

查看 ansible-doc 的使用說明:

###一般用法:(也是常用的用法)
ansible-doc -l 獲取模塊信息
ansible-doc -s MOD_NAME 獲取指定模塊的使用幫助

###ansible-doc
[root@CentOS7-master ~]# ansible-doc -h
Usage: ansible-doc [options][module...]

Options:
-h, --help show this help message and exit # 顯示命令參數API文檔

-l, --list List available modules #列出可用的模塊

-M MODULE_PATH, --module-path=MODULE_PATH #指定模塊的路徑specify path(s) to module library (default=None)

-s, --snippet Show playbook snippet for specified module(s) #顯示playbook制定模塊的用法

--version show program's version number and exit # 顯示ansible-doc的版本號查看模塊

實例:

[root@CentOS7-master ~]# ansible-doc -l|grep mysql
mysql_db Add or remove MySQL databases from a remote host.
mysql_replication Manage MySQL replication
mysql_user Adds or removes a user from a MySQL database.
mysql_variables Manage MySQL global variables
[root@CentOS7-master ~]#
[root@CentOS7-master ~]# ansible-doc -l mysql_replication
a10_server Manage A10 Networks AX/SoftAX/Thunder/vThunder devic...
a10_service_group Manage A10 Networks devices' service groups
......
......
......
quantum_router_interface Attach/Detach a subnet's interface to a router
quantum_subnet Add/remove subnet from a network
(END)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章