一、介绍:
Ansible默认通过 SSH 协议管理机器,所以只要机器上安装了Python都可运行ansible;ansible是基于模块工作,主要框架包括:
1、连接插件connection plugins:负责和被监控端实现通信;
2、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
3、各种模块核心模块、command模块、自定义模块
4、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
二、使用yum安装ansible:
yum -y install gcc zlib zlib-devel openssl openssl-devel ansible验证是否安装成功:ansible --version
三、配置ansible无需秘钥远程登录节点服务器:
1、创建公钥:ssh-keygen -t rsa(无密码直接回车即可)2、将公钥传到节点服务器:ssh-copy-id -i root@IP
四、ansible常用命令:
1、在指定主机上执行命令
ansible '*' -m command -a 'date'
2、指定节点上的权限,修改属组和属主
ansible '*' -m file -a "dest=/tmp/t.sh mode=755 owner=root group=root"
3、在指定节点上创建一个名为test,gid为2018的组
ansible all -m group -a 'gid=2018 name=test'
4、在指定节点上创建名为test,组为test的用户
ansible all -m user -a 'name=test groups=test state=present'
5、在指定节点上删除名为test的用户
ansible all -m user -a 'name=test groups=test remove=yes'
6、在指定节点上安装服务
ansible all -m yum -a "state=present name=httpd"
7、在指定节点上启动服务,并开机自启
ansible all -m service -a 'name=httpd state=started enabled=yes'
8、检查主机连接
ansible all -m ping
9、执行主控端脚本
ansible '*' -m script -a '/root/test.sh'
10、将主控方/root/a目录推送到指定节点的/tmp目录下
ansible all -m synchronize -a 'src=/root/a dest=/tmp/ compress=yes'
11、将0.0.0.0节点的/tmp/a目录拉取到主控节点的/root目录下
ansible 0.0.0.0 -m synchronize -a 'mode=pull src=/tmp/a dest=/root/'
12、在指定服务器上修改文件,在文件末尾添加一行
ansible all -m lineinfile -a "dest=/root/test.txt line='hahaha'"
13、执行主控端脚本
ansible '*' -m script -a '/root/test.sh'
五、ansible批量部署服务文件架构:
hosts/ \\Ansible 可同时操作属于一个组的多台主机,组和主机之间的关系通过 inventory 文件配置. 默认的文件路径为 /etc/ansible/hosts
roles/ \\ansible所有的信息都放到此目录下面对应的目录中
└── tomcat \\服务名称
├── default \\为当前角色设定默认变量时使用此目录,应当包含一个main.yml文件;
├── files \\存放有copy或script等模块调用的文件
├── handlers \\此目录总应当包含一个main.yml文件,用于定义各角色用到的各handler
├── meta \\应当包含一个main.yml,用于定义角色的特殊设定及其依赖关系;1.3及以后版本支持
├── tasks \\至少包含一个名为main.yml的文件,定义了此角色的任务列表,可使用include指令
├── templates \\template模块会自动在此目录中寻找Jinja2模板文件
└── vars \\应当包含一个main.yml文件,用于定义此角色用到的变量
site.yml
附:(批量部署tomcat服务 Centos7.0)
1、创建批量部署文件架构
mkdir -pv /etc/ansible/tomcat/{files,tasks,templates,vars,handlers,meta,default}
touch /etc/ansible/site.yml
2、定义节点服务器的ip地址
vim /etc/ansible/hosts
[tomcat] (名称随便起,为了后面调用)
10.0.0.1
10.0.0.2
3、编写执行文件
vim /etc/ansible/site.yml
- name: Install tomcat application prod enviroment
hosts: tomcat
remote_user: root
roles:
- tomcat
4、编写任务执行文件(注意文件中包名和路径已实际为准)
vim /etc/ansible/tomcat/tasks/main.yml
- name: 将tomcat压缩包copy到远程主机apache-tomcat-7.0.68.tar.gz
copy: src=/usr/src/apache-tomcat.tar.gz dest=/usr/src
- name: 解压tomcat压缩包
shell: chdir=/usr/src/ tar zxvf apache-tomcat.tar.gz
- name: tomcat压缩包 重新命名为 tomcat
shell: chdir=/usr/src/ mv apache-tomcat-8.5.34 apache-tomcat
- name: 将jdk压缩包copy到远程主机
copy: src=/usr/src/jdk1.8.tar.gz dest=/usr/src
- name: 解压jdk
shell: chdir=/usr/src/ tar xzvf jdk1.8.tar.gz
- name: 重命名为jdk1.8
shell: chdir=/usr/src mv jdk1.8.0_191 jdk1.8
5、执行批量部署
ansible-playbook -i hosts site.yml
