gy13100892256
作者gy13100892256·2021-05-11 14:02
系统管理员·电信

常用的 Ansible Module

字数 3583阅读 2193评论 0赞 0

本文将介绍Ansible较常用的8个模组(Modules)

易于

易于:模块的英文给的Debian,Ubuntu的等作业系统(OS)使用的套件模组(包装模块),我们可以通过它管理易于套件。其类似Linux的指令有 apt , apt-get, aptitude 和 dpkg 。

系统需求:需先安装python-apt(python 2)或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.移除纳米套件。

- name: Remove "nano" package
 apt:
   name: nano
   state: absent

命令

命令:模块是个可以在远端上执行指令的指令模组(Commands Modules),刚入门Ansible会用模块不多?只要Linux 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),若有使用变数需求者,可改用 模板 模块,这部份冻仁会在第14章提到。其类似的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 , chown, ln, mkdir 和 touch。

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.建立软连结( ln)

- name: create a symlink file
 file:
   src: /tmp
   dest: /home/docker/tmp
   state: link

lineinfile

lineinfile module是个可用正规表示式对档案进行插入或取代文字的档案模组(Files Modules)。其类似的Linux指令为 sed 。

1. 移除搬运工使用者的须藤的权限。

- name: remove sudo permission of docker
 lineinfile:
   dest: /etc/sudoers
   state: absent
   regexp: '^docker'

2.在 /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 。

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

贝壳

外壳 模块可以的英文在远端用 /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 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

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广