1.ansible安装目录:
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):
3.hosts 的定义:
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。那么调用时如下来调用:
hosts: host1
role:
- websrvs
hosts: host2
role:
- phpappsrvs
hosts: host3
role:
- dbsrvs
hosts: host4
role:
- websrvs
- phpappsrvs
这样代码就可以重复利用了,每个角色可以被独立重复调用。
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 ------ 在各被管理节点运行指定的命令
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
用以致学,学以致用