易于

易于 模块的英文给的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