内容介绍
一、ansible ad-hoc模式.
二、主机名设置
三、 一些ad-hoc模式的案例
四、ansible playbook模式
五、ansible playbook核心概念
六、重要配置项目
七、ansible playbook案例
八、小结
一、ansible ad-hoc模式.
- ansible <主机名> <command>
- 主机名可以有多种模式,如特定主机、特定组主机、所有主机
- command支持执行命令、调用模块
二、主机名设置
ad-hoc支持多种不同的主机名模式
- all或 * ︰表示所有主机均执行
- one.example.com 或192.150.1.1︰表示特定的主机需要执行3. one.example.com:two.example.com︰表示多个主机需要执行
- prod: 表示组名需要执行
三、一些ad-hoc模式的案例
- ansible prod -m shell -a 'echo $TER'`:在prod主机上使用shell 模块调用`echo $TERN`命令
- ansible prod -m copy -a "src=/etc/hosts dest=/tmp/hosts"︰将本地主机的 hosts文件通过copy命令传递到prod主机上
- ansible prod -m yum -a "name=acme state=present":在prod主机上安装软件
四、ansible playbook模式
- playbook是ansible最强大的模式,可以将复杂任务通过一系列简单描述梳理清楚。
- playbook可以使用源码进行管理,从而更好的管理服务配置
五、ansible playbook核心概念
- Playbook: Playbook可以视为一个独立的项目,每个 Playbook可以实现不同的命令和需求。比如,根据不同的环境区分、根据不同的业务区分。
- Play: Playbook中区分不同的Play,可以通过区分Play,可以划分不同的任务。如,在配置主机过程中,就可以分为主机标准化、安全配置、软件安装、部署环境配置等。
- Task:每一个play包含了一个task列表〈(任务列表)。一个task在其所对应的所有主机上执行完毕之后,下一个task才会执行。
- Modules:每一个Task都会使用一个特定的Modules 来执行命令,Modules往往和特定的功能进行挂钩,如`yum`主要负责yum 软件管理。`file`主要负责文件管理。
- Handlers:被触发后执行特定的命令,是Task 的一种表现形式。
六、重要配置项目
- ask_pass or ask_sudo_pass︰是否请求用户密码或请求sudo密码`inventory `:配置Inventory文件路径
- `log_path`:日志文件路径
- 'module_name : ad-hoc模式下使用的默认模块
- .hosts `: playbook模式下的默认主机,默认值为`*`,即所有主机.
- 'remote_port:远程主机的默认端口,默认值为22
- 'remote_user`:远程主机的默认用户,默认值为当前用户
七、ansible playbook案例
[root@ansible PlayBook]# cat testtmp.yml
#模板示例
---
- hosts: all
remote_user: root
vars:
- listen_port: 88 #定义变量
tasks:
- name: Install Httpd
yum: name=httpd state=installed
- name: Config Httpd
template: src=httpd.conf.j2 dest=/etc/httpd/conf/httpd.conf #使用模板
notify: Restart Httpd
- name: Start Httpd
service: name=httpd state=started
handlers:
- name: Restart Httpd
service: name=httpd state=restarted
- hosts: webserversvars :
http_port: 80max_clients: 28eremote_user: roottasks:
- name: ensure apache is at the latest versionyum: pkg=httpd state=latest
-name: write the apache config file
template: src=/ srv/httpd.j2 dest=/etc/httpd.confnotify:
- restart apache
- name: ensure apache is runningservice: name=httpd state=startedhandlers:
- nane: rdstart apache
service: name=httpd state=restarted
for more information.ok :[47.104.85.246]
TASK[test server can run] **************************************
ok :[47.104.85.246]
TASK[upgrade all packages]·**********************************
fatal: [47.104.85.246]:FAILED! =>{"ansible_facts": ["pkg_mgr" : "homebrew""}), " changed: false,"msg" : [ "could not detect which majord revnallv specifv use_backend to tell the module whether to use the yum (yum3) or dnf Cyum4) backend})""J3
PLAYRECAP*******************************************
47.104.85.246
: ok-2changed-。
unreachable=0failed-1skipped=
source-codessh root@47.104.85.246
roote47.104.85.246"s password: t
八、小结:
- Playbook与ad-hoc相比,是一种完全不同的运用ansible的方式,类似与saltstack的state状态文件。
- ad-hoc无法持久使用,playbook可以持久使用。
- playbook是由一个或多个play组成的列表,play的主要功能在于将事先归并为一组的主机装扮成事先通过ansible中的task定义好的角色。从根本上来讲,所谓的task无非是调用ansible的一个module。将多个play组织在一个playbook中,即可以让它们联合起来按事先编排的机制完成某一任务