ansible批量管理服務 上

昨夜、星辰發表於2019-08-04

1 ansible簡介

1.1 ansible批量管理服務概述

(1)是基於python語言開發的自動化軟體工具
(2)是基於SSH遠端管理服務實現遠端主機批量管理
(3)並行管理,部署簡單,應用也簡單方便

1.2 ansible批量管理服務意義

(1)提高工作的效率
(2)提高工作的準確度
(3)減少維護的成本
(4)減少重複性工作

1.3 ansible批量管理服務功能

(1)可以實現批量系統操作配置
(2)可以實現批量軟體服務部署
(3)可以實現批量檔案資料分發
(4)可以實現批量系統資訊收集

1.4 ansible批量管理服務特點

(1)管理端不需要啟動服務程式(no server)
(2)管理端不需要編寫配置檔案(/etc/ansible/ansible.cfg)
(3)受控端不需要安裝軟體程式(libselinux-python)
(4)受控端不需要啟動服務程式(no agent=無代理)
(5)服務程式管理操作模組眾多(module)
(6)利用劇本編寫來實現自動化(playbook)

1.5 ansible批量管理服務架構

(1)連線外掛(connectior plugins) :用於連線主機 用來連線被管理端
(2)核心模組(core modules) :連線主機實現操作, 它依賴於具體的模組來做具體的事情
(3)自定義模組(custom modules) :根據自己的需求編寫具體的模組
(4)外掛(plugins) :完成模組功能的補充
(5)劇本(playbooks):ansible的配置檔案,將多個任務定義在劇本中,由ansible自動執行
(6)主機清單(host inventory):主機清單配置資訊,定義ansible需要操作主機的範圍
(7)最重要的一點是 ansible是模組化的,它所有的操作都依賴於模組
111_看圖王.png

2 ansible服務部署

2.1 ansible安裝

系統、核心版本

[root@m01 ~]#cat /etc/redhat-release
CentOS Linux release 7.5.1804 (Core) 
[root@m01 ~]#uname -a
Linux m01 3.10.0-862.el7.x86_64 #1 SMP Fri Apr 20 16:44:24 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

安裝ansible

[root@m01 ~]yum repolist    # 檢視是否有相應epel源,安裝ansible需要epel源
[root@m01 ~]yum install -y ansible
[root@m01 ~]#rpm -qa ansible
ansible-2.8.1-1.el7.noarch  # ansible版本

2.1 ansible語法格式

ansible 管理主機資訊  -m  模組名稱 -a "操作動作" 
1563888396102-e011e809-7cc9-424a-b75f-73dd5f0bb771.png

2.2 ansible主要配置檔案

官方資料: https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html
配置檔案

[root@m01 ~]#rpm -ql ansible
/etc/ansible/ansible.cfg     --- ansible配置檔案 
/etc/ansible/hosts           --- 主機清單檔案,定義管理的主機資訊
/etc/ansible/roles           --- 角色目錄(更加規範使用ansible)

ansible配置檔案

vi /etc/ansible/ansible.cfg
#ansible_become=True             --- 開啟使用者切換功能
#ansible_become_method=sudo      --- 使用什麼方式切換使用者許可權 su / sudo
#ansible_become_user=root        --- 預設切換成什麼使用者
#ansible_become_ask_pass=false   --- 是否使用密碼認證

2.3 ansible主機清單配置

ansible_become 開啟使用者sudo或su功能
ansible_become_method 選擇獲取許可權的方式 su / sudo
ansible_become_user 指定切換成什麼使用者操作
ansible_become_password 實現設定su或者sudo密碼資訊

2.3.1 方法一:編寫遠端主機地址資訊

[root@m01 ~]#vim /etc/ansible/hosts 
# 最後面新增IP地址
172.16.1.7
172.16.1.31
172.16.1.41

命令檢測
所有IP地址可以用 all 來代替

root@m01 ~]#ansible all -m command -a "hostname"
172.16.1.7 | CHANGED | rc=0 >>
web01

172.16.1.41 | CHANGED | rc=0 >>
backup

172.16.1.31 | CHANGED | rc=0 >>
nfs01

也可以用逗號隔開IP地址

[root@m01 ~]#ansible 172.16.1.31,172.16.1.41,172.16.1.7 -m command -a "hostname"
172.16.1.7 | CHANGED | rc=0 >>
web01

172.16.1.31 | CHANGED | rc=0 >>
nfs01

172.16.1.41 | CHANGED | rc=0 >>
backup

2.3.2 方法二:編寫服務內建變數資訊

編寫服務內建變數資訊

ansible_port=xxx      --- 指定遠端服務埠號
ansible_password=xxx  --- 指定遠端服務密碼資訊
ansible_user=xxx      --- 指定以什麼使用者遠端連線主機
ansible_host=xxx      --- 指定遠端主機地址資訊和名稱做對映,XXX=ip地址

命令檢測:
在這裡密碼,埠都預設一樣的

[root@m01 ~]#vim /etc/ansible/hosts
nfs01 ansible_host=172.16.1.31
172.16.1.41 ansible_user=root ansible_password=123456
172.16.1.7  ansible_user=root ansible_password=123456 ansible_port=22 

# 命令執行
[root@m01 ~]#ansible all -m command -a "hostname"
nfs01 | CHANGED | rc=0 >>
nfs01

172.16.1.7 | CHANGED | rc=0 >>
web01

172.16.1.41 | CHANGED | rc=0 >>
backup

如果埠,密碼不一樣該怎麼用

[root@m01 ~]#vim /etc/ansible/hosts
nfs01 ansible_host=172.16.1.31
172.16.1.41 ansible_user=root ansible_password=123456
172.16.1.7  ansible_user=root ansible_password=654321 ansible_port=52113

# 命令執行
[root@m01 ~]#ansible all -m command -a "hostname"
nfs01 | CHANGED | rc=0 >>
nfs01

172.16.1.7 | CHANGED | rc=0 >>
web01

172.16.1.41 | CHANGED | rc=0 >>
backup

2.3.3 方法三:編寫服務主機組資訊

編寫服務主機組資訊

[root@m01 ~]#vi /etc/ansible/hosts
[ichn]
nfs01 ansible_host=172.16.1.31
172.16.1.41 ansible_user=root ansible_password=123456
[web]
172.16.1.7  ansible_user=root ansible_password=123456 ansible_port=22  

命令檢測
主機組所有名稱可以用 all 代替

[root@m01 ~]#ansible all -m command -a "hostname"
nfs01 | CHANGED | rc=0 >>
nfs01

172.16.1.7 | CHANGED | rc=0 >>
web01

172.16.1.41 | CHANGED | rc=0 >>
backup

主機組所有名稱之間可以用逗號隔開

[root@m01 ~]#ansible ichn,web -m command -a "hostname"
nfs01 | CHANGED | rc=0 >>
nfs01

172.16.1.7 | CHANGED | rc=0 >>
web01

172.16.1.41 | CHANGED | rc=0 >>
backup

2.2.4 方法四:編寫服務主機子組資訊

編寫服務主機子組資訊
children:是固定的

[root@m01 ~]#vim /etc/ansible/hosts
[nfs:children]
nfs_server
nfs_client
[nfs_server]
nfs01 ansible_host=172.16.1.31
[nfs_client]
172.16.1.41 ansible_user=root ansible_password=123456
172.16.1.7  ansible_user=root ansible_password=12345 ansible_port=22

命令檢測
所有主機組,子組都可以用 all 來代替

[root@m01 ~]#ansible all -m command -a "hostname"
172.16.1.41 | CHANGED | rc=0 >>
backup

172.16.1.7 | CHANGED | rc=0 >>
web01

nfs01 | CHANGED | rc=0 >>
nfs01

所有主機組,子組都可以用 nfs 來代替

[root@m01 ~]#ansible nfs -m command -a "hostname"
nfs01 | CHANGED | rc=0 >>
nfs01

172.16.1.7 | CHANGED | rc=0 >>
web01

172.16.1.41 | CHANGED | rc=0 >>
backup

可以單獨啟動其中一個子組

[root@m01 ~]#ansible nfs_server -m command -a "hostname"
nfs01 | CHANGED | rc=0 >>
nfs01

2.2.5 方法五:編寫配置主機清單變數資訊

配置主機清單變數資訊

[root@m01 ~]#vim /etc/ansible/hosts
[nfs:vars]
pass=123456
port=873
[nfs]
172.16.1.31
172.16.1.41

[nfs_client]
172.16.1.41
[nfs_client:vars]
ansible_user=root
ansible_password=123456

命令檢測
所有主機清單變數都可以用 all 來代替

[root@m01 ~]#ansible all -m command -a "hostname"
172.16.1.31 | CHANGED | rc=0 >>
nfs01

172.16.1.41 | CHANGED | rc=0 >>
backup

可以用變數的主機組來代替

[root@m01 ~]#ansible nfs -m command -a "hostname"
172.16.1.31 | CHANGED | rc=0 >>
nfs01

172.16.1.41 | CHANGED | rc=0 >>
backup

2.4 ansible遠端連線操作異常說明

(1)檢視主機清單配置檔案是否正確
(2)利用SSH命令直接連線,連線不上檢視有沒有公鑰  密碼正不正確  指定使用者正不正確  防火牆是否阻止
(3)遠端管理一直報錯,只要老的ansible遠端會話存在

[root@m01 /]#ps -ef|grep ssh
# SSH遠端服務程式(實現客戶端遠端連線)
root       1211      1  0 09:49 ?        00:00:00 /usr/sbin/sshd -D
# SSH遠端連線會話程式(維持連線會話)
root       2179   1211  0 15:16 ?        00:00:00 sshd: root@pts/1,pts/2

3 ansible服務模組應用方法

3.1 command模組(預設模組,不加模組會預設使用command)

command – Execute commands on targets:對目標主機執行命令
Synopsis:模組詳細說明
(1)模組多個引數要用空格分隔
(2)使用commad模組一些特殊符號資訊不能使用,如果非要執行請使用shell模組
像變數$HOME和"<",">","|",";"和"&"將不起作用
Parameters:模組的引數

chdir 在執行命令之前,先切換指定目錄(遠端主機)
creates 在執行命令前,判斷遠端主機指定檔案是否存在,如果存在,命令不執行
removes 在執行命令前,判斷遠端主機指定檔案是否存在,如果存在,命令繼續執行
free_form 在使用這個模組是, -a後面必須輸入一個合法linux命令

引數演示
chdir:在執行命令之前,先切換指定目錄(遠端主機)

[root@m01 ~]#ansible 172.16.1.41 -m command -a "pwd"
172.16.1.41 | CHANGED | rc=0 >>
/root

[root@m01 ~]#ansible 172.16.1.41 -m command -a "chdir=/tmp pwd"
172.16.1.41 | CHANGED | rc=0 >>
/tmp

creates:在執行命令前,判斷遠端主機指定檔案是否存在,如果存在,命令不執行

[root@m01 ansible]# ansible 172.16.1.41 -m command -a "creates=/etc/rsyncd.conf touch /etc/rsyncd.conf"
172.16.1.41 | SUCCESS | rc=0 >>
skipped, since /etc/rsyncd.conf exists      # 檔案已存在,不會執行後續命令
    
[root@m01 ~]#ansible 172.16.1.41 -m command -a "creates=/tmp/test.txt touch /tmp/test.txt"
 [WARNING]: Consider using the file module with state=touch rather than running 'touch'.  If you need
to use command because file is insufficient you can add 'warn: false' to this command task or set
'command_warnings=False' in ansible.cfg to get rid of this message.

172.16.1.41 | CHANGED | rc=0 >>
# 檔案沒有,執行後續命令建立檔案
[root@backup tmp]#ll 
total 2
-rw-r--r-- 1 root root   0 Jul 24 09:52 test.txt

3.2 shell模組(萬能模組 )

shell – Execute shell commands on targets:在遠端目錄主機執行命令
Parameters:模組的引數 和command引數一樣

chdir 在執行命令之前,先切換指定目錄(遠端主機)
creates 在執行命令前,判斷遠端主機指定檔案是否存在,如果存在,命令不執行
removes 在執行命令前,判斷遠端主機指定檔案是否存在,如果存在,命令繼續執行
free_form 在使用這個模組是, -a後面必須輸入一個合法linux命令

引數演示
shell識別 > 

[root@m01 ~]#ansible 172.16.1.41 -m shell -a "echo 123456 >/tmp/test.txt"
172.16.1.41 | CHANGED | rc=0 >>

[root@backup tmp]#cat test.txt
123456

3.3 script模組(指令碼模組)

Runs a local script on a remote node after transferring it:遠端批量執行本地指令碼資訊
shell模組遠端執行指令碼
第一步:編寫一個指令碼

[root@m01 scripts]#vim yum.sh
#!/bin/bash
yum install -y htop 

第二步:遠端傳輸指令碼

[root@m01 scripts]#ansible 172.16.1.41 -m copy -a "src=/server/scripts/yum.sh dest=/server/scripts"

第三步:批量執行指令碼檔案

[root@m01 scripts]#ansible 172.16.1.41 -m shell -a "sh /server/scripts/yum.sh"

script 遠端執行指令碼
第一步:編寫指令碼

[root@m01 scripts]#vim yum.sh
#!/bin/bash
yum install -y htop 

第二步:遠端執行指令碼

[root@m01 scripts]#ansible 172.16.1.41 -m script -a "/server/scripts/yum.sh"
# scripy模組可以省略sh

相比shell模組來講,script不用將指令碼傳輸到遠端主機,指令碼本身不用進行授權,即可利用script模組執行,不需要使用sh,更加簡潔,高效。

3.4 copy模組 把本地檔案推送到遠端主機

copy:可以將本地資料批量拷貝到遠端主機,可以將遠端主機資料進行移動操作(並不是拉取)

src  指定本地要推送的源資料資訊
dest 指定儲存資料目錄路徑資訊
mode 資料推送後修改資料許可權
owner 修改資料推送後的所屬使用者資訊
group 修改資料推送後的所屬組資訊
remote_src 指定源為遠端主機路徑資訊
backup 將資料進行備份
content 在指定遠端主機生成有資料的檔案,指定檔案內容
directory_mode 遞迴設定目錄的許可權,預設為系統預設許可權
forces 如果目標主機包含該檔案,但內容不同,如果設定為yes,則強制覆蓋。
如果為no,則只有當目標主機的目標位置不存在該檔案時,才複製。預設為yes。
others 所有的file模組裡的選項都可以在這裡使用

使用copy 模組,將/ichn/test.txt檔案傳輸到各個伺服器,許可權修改為666 屬主屬組為ichn

[root@m01 ichn]#ansible all -m copy -a "src=/ichn/test.txt dest=/backup mode=666 owner=ichn group=ichn"

檢查結果

[root@m01 ichn]#ansible all -m shell -a "ls -l /backup/test.txt"
172.16.1.41 | CHANGED | rc=0 >>
-rw-rw-rw- 1 ichn ichn 0 Jul 20 14:48 /backup/test.txt

172.16.1.31 | CHANGED | rc=0 >>
-rw-rw-rw- 1 ichn ichn 0 Jul 24 11:05 /backup/test.txt

ansible all -m copy -a "src=/ichn/ =/backup mode=666 owner=ichn group=ichn"
ansible all -m copy -a "src=/ichn dest=/backup mode=666 owner=ichn group=ichn"
說明: 複製目錄是遵循rsync複製目錄原理 目錄後面有/ 和 沒有/有區別
實現資料備份

ansible nfs -m copy -a "src=/ichn/ichn.txt dest=/backup backup=yes"

批量備份:

ansible nfs -m copy -a "src=/backup/ichn.txt dest=/backup/ichn.txt.bak remote_src=yes"

批量還原:

ansible nfs -m copy -a "src=/backup/ichn.txt.bak dest=/backup/ichn.txt remote_src=yes"

生成一個有資料的檔案

ansible nfs_client -m copy -a "content="ichn123" dest=/etc/rsync.password mode=600"

3.5 fetch模組 拉取資料操作

引數:

dest 將遠端主機拉取過來的檔案儲存在本地的路徑資訊
src 指定從遠端主機要拉取的檔案資訊,只能拉取檔案
flat 預設設定為no,如果設定為yes,將不顯示172.16.1.41/etc/資訊

引數演示:dest,src

[root@m01 tmp]#ansible 172.16.1.41 -m fetch -a "src=/etc/hosts dest=/tmp"

[root@m01 tmp]#ll
total 0
drwxr-xr-x 3 root root 17 Jul 24 21:27 172.16.1.41
drwx------ 2 root root  6 Jul 23 08:20 vmware-root

flat=yes

[root@m01 tmp]#ansible 172.16.1.41 -m fetch -a "src=/etc/hosts dest=/tmp/ flat=yes"

[root@m01 tmp]#ls
hosts  vmware-root

3.6 file模組 修改遠端主機資料屬性,建立和刪除遠端主機資料資訊

引數:

path 指定遠端主機上已有的一個檔案資料
mode 修改資料許可權數值
owner 修改屬主
group 修改屬組
src 指定要建立軟連結的檔案資訊
recurse recurse=yes 將目錄及目錄裡檔案的許可權遞迴修改 recurse=no 不遞迴





state
state=directory 建立目錄,可以遞迴建立目錄
state=touch 建立檔案:如果路徑不存在將建立一個空檔案
state=link 建立軟連結
state=hard 建立硬連結
state=absent 刪除資料
state=file 檢查檔案是否存在

引數演示:mode owner group

[root@m01 tmp]#ansible 172.16.1.41 -m file -a "path=/tmp/test.txt mode=666 owner=ichn group=ichn" 

[root@backup tmp]#ll -d test.txt 
-rw-rw-rw- 1 ichn ichn 7 Jul 24 10:07 test.txt

state=directory:建立目錄

[root@m01 tmp]#ansible 172.16.1.41 -m file -a "path=/tmp/yang state=directory"

[root@backup tmp]#ll
total 8
drwxr-xr-x 2 root   root     6 Jul 24 21:52 yang

遞迴建立目錄

[root@m01 tmp]#ansible 172.16.1.41 -m file -a "path=/tmp/yang/yang1/yang2 state=directory"

[root@backup tmp]#tree yang
yang
└── yang1
    └── yang2

2 directories, 0 files

state=touch:建立檔案,如果路徑不存在將建立一個空檔案

[root@m01 tmp]#ansible 172.16.1.41 -m file -a "path=/tmp/ceshi.txt state=touch"

state=link:建立軟連結

[root@m01 tmp]#ansible 172.16.1.41 -m file -a "src=/tmp/test.txt  path=/backup/test_soft_link.txt state=link"

state=hard:建立硬連結

[root@m01 tmp]#ansible 172.16.1.41 -m file -a "src=/tmp/test.txt  path=/backup/test_hard_link.txt state=hard" 

state=absent:刪除資料操作

[root@m01 tmp]#ansible 172.16.1.41 -m file -a "path=/backup/test_hard_link.txt state=absent" 

state=file:檢查檔案是否存在

[root@m01 tmp]#ansible 172.16.1.41 -m file -a "path=/tmp/ceshi.txt state=file" 

recurse=yes:遞迴修改許可權

[root@m01 ~]#ansible 172.16.1.41 -m file -a "path=/tmp/yang/ mode=700 owner=ichn group=ichn recurse=yes"

3.7 yum模組 批量安裝軟體模組

引數:

name  指定要安裝的軟體名稱




state
state=installed

安裝軟體
state=present
state=latest 更新軟體
state=removed

移除解除安裝軟體
state=absent 

引數演示:absent installed removed

[root@m01 tmp]#ansible 172.16.1.41 -m yum -a "name=htop state=absent"    --- 解除安裝軟體 
[root@m01 tmp]#ansible 172.16.1.41 -m yum -a "name=htop state=installed" --- 安裝軟體
[root@m01 tmp]#ansible 172.16.1.41 -m yum -a "name=htop state=removed"   --- 解除安裝軟體

3.8 service模組 批量管理服務啟動狀態

引數

name 管理哪個服務名稱



state
state=reloaded 平滑重啟服務
state=restarted 重啟服務
state=started 啟動服務
state=stopped 停止服務


enabled
enabled=no 開機不執行
enabled=yes 開機自動執行

引數演示:restarted started stopped enabled=no enabled=yes

[root@m01 tmp]#ansible 172.16.1.41 -m service -a "name=crond state=stopped"     停止服務
[root@m01 tmp]#ansible 172.16.1.41 -m service -a "name=crond state=started"     啟動服務
[root@m01 tmp]#ansible 172.16.1.41 -m service -a "name=crond state=restarted"   重啟服務
[root@m01 tmp]#ansible 172.16.1.41 -m service -a "name=crond enabled=no"            開機不啟動服務
[root@m01 tmp]#ansible 172.16.1.41 -m service -a "name=crond enabled=yes"           開機啟動服務

3.9 corn模組 批量部署定時任務

引數:

minute  分 Minute when the job should run ( 0-59, , /2, etc )
hour    時 Hour when the job should run ( 0-23, , /2, etc )
day     日 Day of the month the job should run ( 1-31, , /2, etc )
month   月 Month of the year the job should run ( 1-12, , /2, etc )
weekday 周 Day of the week that the job should run ( 0-6 for Sunday-Saturday, *, etc )
job      工作:要做的事情
name     定義定時任務的描述資訊


disabled
disabled=no 取消註釋
disabled=yes 新增註釋


state
state=absent 刪除定時任務
state=present 建立定時任務

要求: 每隔五分鐘,進行時間同步

ansible 172.16.1.41 -m cron -a "minute=*/5 job='ntpdate ntp1.aliyun.com &>/dev/null'"

要求: 每週五,晚上10:30, 需要去大保健

ansible 172.16.1.41 -m cron -a "name='大保健' minute=30 hour=22 weekday=5 job='make shufu &>/dev/null'"
說明: 定時任務配置時.需要新增name註釋資訊,否則會出現反覆建立相同定時任務

註釋定時任務 刪除定時任務 建立定時任務

ansible 172.16.1.41 -m cron -a "name='大保健03' state=absent"   --- 刪除指定定時任務
ansible 172.16.1.41 -m cron -a "name='大保健02' job='make shufu &>/dev/null' disabled=yes"
ansible 172.16.1.41 -m cron -a "name='大保健02' job='make shufu &>/dev/null' disabled=no"

3.10 user模組 批量建立建立使用者

引數

name 建立的使用者名稱稱
password 設定使用者密碼資訊 必須設定為密文
create_home yes 表示建立家目錄 no 不建立家目錄
shell 指定使用者登入方式  shell=/sbin/nologin
group 指定使用者屬於哪個組 主要組
groups 指定使用者屬於哪個組 附屬組
uid 指定使用者uid數值
state=absent 刪除使用者
remove=yes 當與state=absent連用的時候,徹底刪除指定使用者。
remove=no 不刪除家目錄

引數演示:name create_home=no shell=/sbin/nologin  group  groups uid state=absent

# 批量建立虛擬使用者
ansible 172.16.1.41 -m user -a "name=alex create_home=no shell=/sbin/nologin"
# 指定使用者所屬組
ansible 172.16.1.41 -m user -a "name=alex group=ichn groups=oldgirl"
# 指定使用者uid
ansible 172.16.1.41 -m user -a "name=alex uid=2000"
# 刪除使用者
ansible 172.16.1.41 -m user -a "name=alex state=absent"

徹底刪除指定使用者:state=absent remove=yes

[root@m01 ~]#ansible 172.16.1.41 -m user -a "name=alex group=alex state=absent remove=yes"

給使用者設定密碼

ansible 172.16.1.41 -m user -a 'name=oldbaby password="$6$oldgirl$kAUTXVC2z1agr1HlmpFe9abFhWKwJ1fNyg64F95U3rVumwQfqOuhV3YkyZU9.H79TChzIKn5epl5M18B199qV1"'

密碼生成方式
方法一:明文加密,演算法生成密文

ansible all -i localhost, -m debug -a "msg={{ 'mypassword' | password_hash('sha512', 'mysecretsalt') }}"
# mypassword    --- 明文密碼資訊
# sha512        --- 明文轉換為密文加密方法
# mysecretsalt  --- 用什麼做演算法依據生成密文資訊

實踐演示

[root@m01 ~]#ansible all -i localhost, -m debug -a "msg={{ '123456' | password_hash('sha512', 'ichn123') }}"
localhost | SUCCESS => {
    "msg": "$6$ichn123$W3jkmkkVTr.9UStm4S50RT2uIEjB/4GEtaAeVCSZ..uWVN1YGxHvluss9JVfAPV0gSJoGn1qAfxGyttIsTjcz0"
}

方法二:centos7無法使用
mkpasswd --method=sha-512
方法三:利用python模組功能
直接安裝

[root@m01 ~]#yum install -y python-pip

優化pip源

[root@m01 ~]#mkdir ~/.pip/
[root@m01 ~]#vim ~/.pip/pip.conf
[global]
index-url = https://mirrors.aliyun.com/pypi/simple/
    
[install]
trusted-host=mirrors.aliyun.com

python -c "from passlib.hash import sha512_crypt; import getpass; print(sha512_crypt.using(rounds=5000).hash(getpass.getpass()))"
[root@m01 ~]#pip install passlib    # 安裝

3.11 mount 批量掛載模組

引數 引數說明
fstype 指定掛載檔案型別 fstype=nfs
opts  設定掛載的引數選項資訊opts=ro opts=rw
path  掛載點路徑資訊
src   要被掛載的儲存裝置(目錄資訊)




state 
state狀態引數
state =unmounted 立即解除安裝,/etc/fstab檔案中不會永久解除安裝
state=absent   立即解除安裝,/etc/fstab檔案中永久解除安裝
state=present  只能實現開機自動掛載
state=mounted 將掛載資訊新增到/etc/fstab檔案,開機自動掛載
實現立即掛載

引數演示:src  path fstype=nfs state=mounted state=unmounted

mount -t nfs 172.16.1.31:/data  /mnt        # /mnt掛載到172.16.1.31:/data
# 立即掛載 並且新增在/etc/fstab檔案
ansible 172.16.1.41 -m mount -a "src=172.16.1.31:/data path=/mnt fstype=nfs state=mounted"
# 立即解除安裝,/etc/fstab檔案中不會永久解除安裝
ansible 172.16.1.41 -m mount -a "src=172.16.1.31:/data path=/mnt fstype=nfs state=unmounted"

3.12 模組引數 ansible顏色提示資訊說明

哪些是重要引數
(1)通過其他人博文
(2)看官網網站文件中,有紅色字型標記的
(3)看官網網站文件中,舉例配置中引數使用頻次  
ansible幫助資訊檢視方法
(1)檢視ansible所有模組:ansible-doc -l
(2)檢視ansible模組引數資訊:ansible-doc -s cron(模組可以換)
(3)檢視ansible模組詳細資訊:ansible-doc cron(模組可以換)   
ansible顏色提示資訊說明

黃色 對遠端主機做出了改動
綠色 查詢資訊,對遠端主機沒有做改動
紅色 遠端執行命令出錯了
紫色 警告資訊(建議資訊)
藍色 命令執行的過程

相關文章