自定义主机列表 创建一个文件写入要执行的配置语句ansible -i 文件名 dockers -m ping -o方法二:修改 /etc/ansible/ansible.cfg/ 配置文件里面的 inventory = /etc/ansible/hosts 换成自己的定义的文件路径
ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
无客户端。
安装:
yum -y install rpel-release
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
yum -y install ansible
rpm -ql ansible #列出所有文件
rpm-qc ansible #查看配置文件
ansible-help #查看ansible帮助
ansible-doc-l #看所有模块(A10,华为,docker,EC2,aws等等广大厂商设备)
ansible-doc-s yum #看yum模块,了解其功能 exam
定义主机清单 vim /etc/ansible/hosts
测试连通性 ansible localhost -m ping #-m 指定模块,-o 一行输出
简洁输出 ansible host1 -m ping -o
ansible host2 -m ping -u root -k 去掉(yes/no)的询问
方法二:vim /etc/ansible/ansible.cfg
host_key_checking = False 去掉注释
修改端口:vim /etc/ssh/sshd_config
Port 2222
ansible_ssh_user='root'
ansible_ssh_pass='chen'
ansible_ssh_prot='2222'
变量
[webserver]
host[
1:4]
[webserver:vars]
ansible_ssh_user='root'
ansible_ssh_pass='666666'
子分组
[webserver]
host[1:4]
[webserver:vars]
ansible_ssh_user='root'
ansible_ssh_pass='666666'
自定义主机列表 创建一个文件写入要执行的配置语句
ansible -i 文件名 dockers -m ping -o
方法二:
修改 /etc/ansible/ansible.cfg/ 配置文件里面的 inventory = /etc/ansible/hosts
换成自己的定义的文件路径
点对点模式(模块)
shell模块(帮助:ansible-doc shell)
ansible webserver -m shell -a 'hostname' -o 获取主机名
ansible wevserver -m shell -a 'hostname' -o -f 2
-f FORKS, --forks=FORKS Ansible一次命令执行并发的线程数。NUM被指定为一个整数,默认是5
specify number of parallel processes to use
(default=5)
复制模块(帮助:ansible-doc copy)
ansible webserver -m copy -a 'src=/etc/hosts dest=/tmp2.txt owner=root group=bin mode=777 backup='yes'
用户模块(帮助:ansible-doc user)
创建用户 ansible webserver -m user -a 'name=chen state=present' 创建
删除用户 ansible webserver -m user -a 'name=chen state=absent' 删除
修改密码 ansible webserver -m user -a 'name=chen password="123"'
加密密码 echo "123" | openssl passwd -1 -stbin
修改shell ansible webserver -m user -a 'name=chen shell=/sbin/nologin append=yes'
软件包管理(帮助:ansible-doc yum)
升级所有的包 ansible host1 -m yum -a 'name="*" state=latest
例:
安装Apache:
ansible host2 -m yum -a 'name="apache" state=latest
服务模块(帮助:ansible-doc service)
启动httpd ansible host2 -m service -a 'name=httpd state=started'
开机启动 ansible host2 -m service -a 'name=httpd state=started enable=yes'
停止 ansible host2 -m service -a 'name=httpd state=stoped'
重启 ansible host2 -m service -a 'name=httpd state=restarted'
开机机制启动 ansible host2 -m service -a 'name=httpd state=start enable=no'
文件模块(帮助:ansible-doc file)
创建文件 ansible host2 -m file -a 'path=/tmp/88.txt mode=777 state=touch'
创建目录 ansible host2 -m file -a 'path=/tmp/88.txt mode=777 state='directory'
收集模块(帮助:ansible-doc setup)
查询(收集)所有的信息 ansible host3 -m setup
ansible host3 -m serup -a 'file=ansible_all_ipv4_addresses'
Role-角色扮演
roles简介:roles则是在ansible中,playbooks的目录组织结构。
而模块化之后,成为roles的组织结构,易读,代码可重用,层次清晰。
准备目录结构 :
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
编写任务
---
- name: install epel-release packge
yum: name=epel-release state=latest
- name: install nginx packge
yum: name=nginx state=latest
- name: copy index.html
copy: src=index.html dest=/usr/share/nginx/html/index.html
- name: copy nginx.conf template
template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf
notify: restart nginx
- name: make sure nginx service running
service: name=nginx state=started enabled=yes
对迭代项的引用,固定变量名为"item”,使用with_item属性给定要迭代的元素;
准备配置文件
vim roles/nginx/templates/nginx.conf.j2
修改配置文件中的:
worker_processes {{ ansible_processor_cores }};
调用内部已知变量
worker_connections {{ worker_connections }};
自定义变量
编写变量
vim roles/nginx/vars/main.yaml
worker_connections: 10240
编写处理程序
vim roles/nginx/handlers/main.yaml
---
- name: restart nginx
service: name=nginx state=restarted
编写剧本
vim roles/site.yaml
- hosts: host4 #这里需要安装那台机器就写那台
- roles:
- nginx
实施
ansible-playbook site.yaml --syntax-check #在本地测试不真正曲线上环境安装
ansible-playbook site.yaml --syntax-check #s实施脚本
然后去验证机器
课堂随记
ansble localhost -m (模块) ping
ping ICMP:网际消息管理协议
saltack
主机清单
客户机更改ssh的端口号以保护ansible
vm /etc/ansible/hosts 加各种属性
wars:vars 变量
children 和组
-doc exam
192.168.113.129 6
192.168.113.130 7 主机
192.168.113.133 1
192.168.113.132 2
packages
var