简介:
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能,无客户端。
自动化运维,首先要做的就是部署环境
在ansible服务器上要解析,这里我只用了两台客户机,一台 服务器
vim /etc/hosts
192.168.122.159 ansible
192.168.122.160 host1
192.168.122.161 host2
这些内容都是要写进本地的hosts文件当中的,注意是在192.168.122.159 ansible服务器上, 不是客户机。在客户机上配置好yum源和ip的一些配置就好。
在ansible服务器上下载ansible
yum install -y ansible
检查:
两台客户端服务器,一台做免密,一台不做免密
定义主机清单
子分组
自定义发:ansible -i hostlist dockers -m ping -o
Ad-Hoc-点对点模式
1、简介:临时的,在ansible中是指需要快速执行的单条命令,并且不需要保存的命令。对于复杂的命令则为 playbook。
2、复制模块
ansible-doc copy 命令帮助
创建用户
修改密码
软件包模块
ansible host2 -m yum -a ‘name=“httpd” state=latest’
服务模块
ansible host2 -m service -a ‘name=httpd state=started’
文件服务
ansible host1 -m file -a ‘path=/tmp/88.txt mode=777 state=touch’
收集模块
ansible host3 -m setup -a ‘filter=ansible_all_ipv4_addresses’
YAML-YAML Ain’t Markup Language-非标记语言
需求
通过YAML编写一个简单的剧本,完成web的部署,配置,启动的全过程。
示例:
编写剧本:
- hosts: host2
tasks:- name: install apache packages
yum: name=httpd state=present- name: copy apache conf
copy: src=./httpd.conf dest=/etc/httpd/conf/httpd.conf- name: ensure apache is running
service: name=httpd state=started enabled=yes
当我们再次修改端口号时,我们就需要再次修改apache.yaml ,在次执行ansible-playbook ,之前的端口就登录不上了。
Role-角色扮演
准备目录结构
mkdir roles/nginx/{files,handlers,tasks,templates,vars} -p
touch roles/site.yaml roles/nginx/{handlers,tasks,vars}/main.yaml
echo 1234 > roles/nginx/files/index.html
yum install -y nginx && cp /etc/nginx/nginx.conf roles/nginx/templates/nginx.conf.j2
编写任务
准备配置文件:
编写变量:
编写剧本:
检测语法问题:
ansible-playbook site.yaml --syntax-check
之后运行,ansible-playbook site.yaml
登录验证: