在上一章「Ansible查看Ansible Modules文件」學(xué)會(huì)怎么看文件以后,接著凍仁將介紹自己較常用的8個(gè)模組(Modules)。
(以下依英文字母排列)
易于
模塊的英文給的Debian,Ubuntu的等作業(yè)系統(tǒng)(OS)使用的套件模組(包裝模塊),我們可以通過它管理易于套件。其類似Linux的指令有
apt
,
apt-get
,
aptitude
和
dpkg
。
系統(tǒng)需求:需先安裝python-apt(python 2)或python3-apt(python 3)的apt套件。
更新套件索引(快?。?,等同于
apt-get update
指令。
- name: Update repositories cache
apt:
update_cache: yes
安裝VIM套件。
- name: Install the package "vim"
apt:
name: vim
state: present
移除納米套件。
- name: Remove "nano" package
apt:
name: nano
state: absent
命令
模塊是個(gè)可以在遠(yuǎn)端上執(zhí)行指令的指令模組(Commands Modules),剛?cè)腴TAnsible會(huì)用模塊不多?只要Linux Shell會(huì)通的指令都可以透過它使用。但它不支持變數(shù)(變量)和
<
,
>
,
|
,
;
和
&
等運(yùn)算,若有這類請需求改用
外殼
模塊。
重新開機(jī)。
- name: Reboot at now
command: /sbin/shutdown -r now
當(dāng)某個(gè)檔案不存在時(shí)才執(zhí)行該指令。
- name: create .ssh directory
command: mkdir .ssh creates=.ssh/
先切換目錄再執(zhí)行指令。
- name: cat /etc/passwd
command: cat passwd
args:
chdir: /etc
copy
module是從本地復(fù)制檔案到遠(yuǎn)端的檔案模組(Files Modules),若有使用變數(shù)需求者,可改用
模板
模塊,這部份凍仁會(huì)在第14章提到。其類似的Linux指令為
scp
。
復(fù)制ssh public key到遠(yuǎn)端(
chmod 644 /target/file
)。
- name: copy ssh public key to remote node
copy:
src: files/id_rsa.pub
dest: /home/docker/.ssh/authorized_keys
owner: docker
group: docker
mode: 0644
復(fù)制ssh public key到遠(yuǎn)端(
chmod u=rw,g=r,o=r /target/file
)。
- name: copy ssh public key to remote node
copy:
src: files/id_rsa.pub
dest: /home/docker/.ssh/authorized_keys
owner: docker
group: docker
mode: "u=rw,g=r,o=r"
復(fù)制nginx vhost設(shè)定檔到遠(yuǎn)端,并備份原有的檔案。
- name: copy nginx vhost and backup the original
copy:
src: files/ironman.conf
dest: /etc/nginx/sites-available/default
owner: root
group: root
mode: 0644
backup: yes
文件
模塊的英文在遠(yuǎn)端建立和刪除檔案(文件),目錄(目錄),軟連結(jié)(符號(hào)連接)的檔案模組(文件的模塊)。其類似的Linux的的的指令為
chown
,
chown
,
ln
,
mkdir
和
touch
。
建立檔案(
touch
),并設(shè)定檔案權(quán)限為644。
- name: touch a file, and set the permissions
file:
path: /etc/motd
state: touch
mode: "u=rw,g=r,o=r"
建立目錄(
mkdir
),并設(shè)定檔案擁有者為docker。
- name: create a directory, and set the permissions
file:
path: /home/docker/.ssh/
state: directory
owner: docker
mode: "700"
建立軟連結(jié)(
ln
)。
- name: create a symlink file
file:
src: /tmp
dest: /home/docker/tmp
state: link
lineinfile
module是個(gè)可用正規(guī)表示式對檔案進(jìn)行插入或取代文字的檔案模組(Files Modules)。其類似的Linux指令為
sed
。
移除搬運(yùn)工使用者的須藤的權(quán)限。
- name: remove sudo permission of docker
lineinfile:
dest: /etc/sudoers
state: absent
regexp: '^docker'
在
/etc/hosts
檔案里用
127.0.0.1 localhost
取代開頭和結(jié)尾結(jié)尾狀語從句:狀語結(jié)尾從句:為
127.0.0.1
的一行。
- name: set localhost as 127.0.0.1
lineinfile:
dest: /etc/hosts
regexp: '^127\.0\.0\.1'
line: '127.0.0.1 localhost'
owner: root
group: root
mode: 0644
service
module是個(gè)用來管理遠(yuǎn)端系統(tǒng)服務(wù)的系統(tǒng)模組(System Modules)。其類似的Linux指令為
service
。
啟用nginx的的。
- name: start nginx service
service:
name: nginx
state: started
停止nginx的的。
- name: stop nginx service
service:
name: nginx
state: stopped
重開網(wǎng)路服務(wù)。
- name: restart network service
service:
name: network
state: restarted
args: eth0
外殼
模塊可以的英文在遠(yuǎn)端用
/bin/sh
執(zhí)行指令的指令模組(命令模塊),支持變數(shù)(變量)和
<
,
>
,
|
,
;
和
&
等運(yùn)算。
借由
ls
狀語從句:
wc
檢查檔案數(shù)量。
- name: check files number
shell: ls /home/docker/ | wc -l
把所有的Python的中的行程給砍掉。
- name: kill all python process
shell: kill -9 $(ps aux | grep ssh | awk '{ print $2 }')
stat
module是用來檢查檔案狀態(tài)的檔案模組(Files Modules)。其類似的Linux指令為
stat
。
檢查檔案是否存在,若不存在則建立它。
- name: check the 'vimrc' target exists
stat:
path: /home/docker/.vimrc
register: stat_vimrc
- name: touch vimrc
file:
path: /home/docker/.vimrc
state: touch
mode: "u=rw,g=r,o=r"
when: stat_vimrc.stat.exists == false
取得某檔案的md5sum。
- name: Use md5sum to calculate checksum
stat:
path: /path/to/something
checksum_algorithm: md5sum
以上為凍仁較常用的8個(gè)模塊,大家可以先從以上的模塊入門Ansible喔!
參賽第12天的凍仁,一早騎車上班時(shí)出了點(diǎn)小小的車禍,也很幸運(yùn)的沒什么大礙。各位鐵人們在參賽的同時(shí)也要多加留意自身安全喔!
更多建議: