1.ansible安装目录:

ansible 部署docker及docker compose ansible-doc -s_服务器

1.1 ansible-doc -l 命令查看到当前 ansible 都支持哪些模块

  ansible-doc -s 模块名 又可以查看该模块有哪些参数可以使用

1.2 ansible-galaxy install username.rolename 从 Ansible Galaxy 网站下载角色;

  ansible-galaxy init rolename用于初始化一个新角色的基本文件结构,节省创建不同的目录和main.yml的时间了。

1.3 ansible-playbook -i hosts site.yml 用于执行任务脚本

2.最佳实践目录(来自官方example):

ansible 部署docker及docker compose ansible-doc -s_php_02

 

3.hosts 的定义:

ansible 部署docker及docker compose ansible-doc -s_apache_03

 

4.playbook基本结构:

---
- hosts: webservers
  vars:
    http_port: 80
    max_clients: 200
  remote_user: test
 become: root #2.6之前是 sudo: yes
  tasks:
  - name: ensure apache is at the latest version
    yum: pkg=httpd state=latest
  - name: write the apache config file
    template: src=/srv/httpd.j2 dest=/etc/httpd.conf
    notify:
    - restart apache
  - name: ensure apache is running
    service: name=httpd state=started
  handlers:
    - name: restart apache
      service: name=httpd state=restarted

5.配置重用-roles 与 配置过滤-tags

假如我们现在有3个被管理主机,第一个要配置成httpd,第二个要配置成php服务器,第三个要配置成MySQL服务器。我们如何来定义playbook?

第一个play用到第一个主机上,用来构建httpd,第二个play用到第二个主机上,用来构建php,第三个play用到第三个主机上,用来构建MySQL。这些个play定义在playbook中比较麻烦,将来也不利于模块化调用,不利于多次调。比如说后来又加进来一个主机,这个第4个主机既是httpd服务器,又是php服务器,我们只能写第4个play,上面写上安装httpd和php。这样playbook中的代码就重复了。

为了避免代码重复,roles能够实现代码重复被调用。定义一个角色叫websrvs,第二个角色叫phpappsrvs,第三个角色叫dbsrvs。那么调用时如下来调用:

ansible 部署docker及docker compose ansible-doc -s_php_04

hosts: host1
role:
- websrvs

hosts: host2
role:
- phpappsrvs
        
hosts: host3
role:
- dbsrvs
        
hosts: host4
role:
- websrvs
- phpappsrvs

ansible 部署docker及docker compose ansible-doc -s_php_04

这样代码就可以重复利用了,每个角色可以被独立重复调用。

 

6.ansible常用模块

ping模块 ------ 检查指定节点机器是否还能连通,用法很简单,不涉及参数,主机如果在线,则回复pong (ansible 10.1.1.113 -m ping)
raw模块 ------ 执行原始的命令,而不是通过模块子系统。(raw: yum -y install python-simplejson)
yum模块 ------
apt模块 ------
pip模块 ------
synchronize模块 ------  使用rsync同步文件,将主控方目录推送到指定节点的目录下。参数 delete src dest mode:push/pull rsync_opts
template模块 ------ 基于模板方式生成一个文件复制到远程主机(template使用Jinjia2格式作为文件模版,进行文档内变量的替换的模块。它的每次使用都会被ansible标记为”changed”状态。) 
copy模块 ------ 在远程主机执行复制操作文件
user 模块与group模块 ------ user模块是请求的是useradd, userdel, usermod三个指令,goup模块请求的是groupadd, groupdel, groupmod 三个指令
service 模块------ 用于管理服务,记得针对Centos7就不要使用这个模块了
get_url 模块 ------ 该模块主要用于从http、ftp、https服务器上下载文件(类似于wget)
fetch模块 ------ 它用于从远程机器获取文件,并将其本地存储在由主机名组织的文件树中。 
file模块 ------ 主要用于远程主机上的文件操作(文件、文件夹、软硬连接、属主属组、权限等)
unarchive模块 ------ 用于解压文件
command 模块和shell ------ 在各被管理节点运行指定的命令

  

 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

用以致学,学以致用