Ansible 常用的 Ansible Module
在上一章「Ansible查看Ansible Modules文件」学会怎么看文件以后,接着冻仁将介绍自己较常用的8个模组(Modules)。
(以下依英文字母排列)
易于
易于
模块的英文给的Debian,Ubuntu的等作业系统(OS)使用的套件模组(包装模块),我们可以通过它管理易于套件。其类似Linux的指令有
apt
,
apt-get
,
aptitude
和
dpkg
。
系统需求:需先安装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
命令
命令
模块是个可以在远端上执行指令的指令模组(Commands Modules),刚入门Ansible会用模块不多?只要Linux Shell会通的指令都可以透过它使用。但它不支持变数(变量)和
<
,
>
,
|
,
;
和
&
等运算,若有这类请需求改用
外壳
模块。
-
重新开机。
- name: Reboot at now command: /sbin/shutdown -r now
-
当某个档案不存在时才执行该指令。
- name: create .ssh directory command: mkdir .ssh creates=.ssh/
-
先切换目录再执行指令。
- name: cat /etc/passwd command: cat passwd args: chdir: /etc
复制
copy
module是从本地复制档案到远端的档案模组(Files Modules),若有使用变数需求者,可改用
模板
模块,这部份冻仁会在第14章提到。其类似的Linux指令为
scp
。
-
复制ssh public key到远端(
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
-
复制ssh public key到远端(
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"
-
复制nginx vhost设定档到远端,并备份原有的档案。
- 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
文件
文件
模块的英文在远端建立和删除档案(文件),目录(目录),软连结(符号连接)的档案模组(文件的模块)。其类似的Linux的的的指令为
chown
,
chown
,
ln
,
mkdir
和
touch
。
-
建立档案(
touch
),并设定档案权限为644。- name: touch a file, and set the permissions file: path: /etc/motd state: touch mode: "u=rw,g=r,o=r"
-
建立目录(
mkdir
),并设定档案拥有者为docker。- name: create a directory, and set the permissions file: path: /home/docker/.ssh/ state: directory owner: docker mode: "700"
-
建立软连结(
ln
)。- name: create a symlink file file: src: /tmp dest: /home/docker/tmp state: link
lineinfile
lineinfile
module是个可用正规表示式对档案进行插入或取代文字的档案模组(Files Modules)。其类似的Linux指令为
sed
。
-
移除搬运工使用者的须藤的权限。
- name: remove sudo permission of docker lineinfile: dest: /etc/sudoers state: absent regexp: '^docker'
-
在
/etc/hosts
档案里用127.0.0.1 localhost
取代开头和结尾结尾状语从句:状语结尾从句:为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是个用来管理远端系统服务的系统模组(System Modules)。其类似的Linux指令为
service
。
-
启用nginx的的。
- name: start nginx service service: name: nginx state: started
-
停止nginx的的。
- name: stop nginx service service: name: nginx state: stopped
-
重开网路服务。
- name: restart network service service: name: network state: restarted args: eth0
贝壳
外壳
模块可以的英文在远端用
/bin/sh
执行指令的指令模组(命令模块),支持变数(变量)和
<
,
>
,
|
,
;
和
&
等运算。
-
借由
ls
状语从句:wc
检查档案数量。- 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是用来检查档案状态的档案模组(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个模块,大家可以先从以上的模块入门Ansible喔!
参赛第12天的冻仁,一早骑车上班时出了点小小的车祸,也很幸运的没什么大碍。各位铁人们在参赛的同时也要多加留意自身安全喔!
相关连结