易于
易于 模块的英文给的Debian,Ubuntu等作业系统(OS)使用等套件模组(包装模块),我们可以通过它管理易于套件。其类似Linux的指令有apt,apt-get,aptitude和dpkg。
PS:系统需求:需先安装python-apt(python2)或python3-apt(python 3)的apt套件。
1、更新套件索引(快取),等同于apt-get update指令。
- name: Update repositories cache apt: update_cache: yes
2、安装Vim套件
- name: Install the package "Vim" apt: name:vim state: present
3、移除nano套件
- name: Remove "nano" package apt: name:nano state:absent
命令
命令 模块是个可以在远端上执行指令等指令模组(Commands Modules),Linux Shell会用等指令都可以通过它使用,但它不支持变量和 <,>,|,;和&等运算,若有这类需求该用shell模块。
1、重新开机
- name: Reboot at now command: /sbin/shutdown -r now
2、当某个文件不存在是才执行该指令
- name: create .ssh directory command:mkdir .ssh creates=.ssh/
3、先切换目录再执行指令
- name: cat /etc/passwd command: cat passwd args: chdir: /etc
复制
copy module是从本地复制文件到远端到文件模块(Files Modules),若有使用变量需求者,可改用 模版 模块,类似到Linux指令为 scp。
1、复制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
2、复制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"
3、复制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,touch,rm,mkdir和ln。
1、建立档案(touch),并设定档案权限为644
- name: touch a file, and set the permissions file: path: /etc/motd state: touch mode: "u=rw,g=r,o=r"
2、建立目录(mkdir),并设定档案拥有者为docker
- name: create a directory, and set the permissions file: path: /home/docker/.ssh/ state: directory owner: docker mode: "700"
3、建立软链接
- name: create a symlink file file: src: /tmp dest: /home/docker/tmp state: link
lineinfile
lineinfile module 是个可用正则表达式对档案进行插入或取代文字对档案模组(Files Modules)。其类似的Linux指令为 sed。
1、移除docker的sudo权限
- name: remove sudo permission of docker lineinfile: dest: /etc/sudoers state: absent regexp: '^docker'
2、在/etc/hosts档案里用127.0.0.1 localhost 取代开头和结尾
- 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。
1、启用nginx
- name: start nginx service service: name: nginx state: started
2、停止nginx
- name: stop nginx service service: name: nginx state: stopped
3、重启网络服务
- name: restart network service service: name: network state: restarted args: eth0
Shell
shell 模块在远端用/bin/sh 执行指令的指令模组(命令模块),支持变量和<,>,|, ;和&等运算。
1、借由ls、wc检查档案数量
- name: check files number shell: ls /home/docker/ | wc -l
2、杀死所有python进程
-name: kill all python process shell: kill -9 $(ps aux | grep ssh | awk '{ print $2 }')
Stat
stat module 是用来检查档案状态等档案模组(Files Modules)。其类似等Linux指令为 stat。
1、检查档案是否存在,若不存在则建立它
- 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
2、获取某档案等md5sum
- name: Use md5sum to calculate checksum stat: path: /path/to/something checksum_algorithm: md5sum