ansible自动化运维工具---ansible安装与配置,ansible与正则表达式,ansible的基础模块(file,user,copy,yum,service)
二.ansible安装1.配置yum源[root@server12 ~]# cd/etc/yum.repos.d/[root@server12 yum.repos.d]# lsdvd.reporedhat.repo[root@server12 yum.repos.d]# vim epel.repo[root@server12 yum.repos.d]# yum repolist[root@serv
·
一.ansible
Ansible是近年越来越火的一款运维自动化工具,其主要功能是帮助运维实现IT工作的自动化、降低人为操作失误、提高业务自动化率、提升运维工作效率。
常用于软件部署自动化、配置自动化、管理自动化、系统化系统任务、持续集成、零宕机平滑升级等。
常见的部署管理工具有Chef、Puppet、Ansible、SaltStack、Fabric.
Ansible发布于2012年,其作者兼创始人是Michael DeHaan。
二.ansible安装与配置
1.三台主机上配置yum源并安装
[root@server12 ~]# cd /etc/yum.repos.d/
[root@server12 yum.repos.d]# vim epel.repo
[root@server12 yum.repos.d]# yum repolist
[root@server12 yum.repos.d]# yum list ansible
Loaded plugins: product-id, search-disabled-repos, subscription-manager
This system is not registered with an entitlement server. You can use subscription-manager to register.
Available Packages
ansible.noarch 2.9.10-1.el7 epel
[root@server12 etc]# yum install ansible -y
[root@server12 yum.repos.d]# scp epel.repo root@172.25.13.13:/etc/yum.reposd.
[root@server12 yum.repos.d]# scp epel.repo root@172.25.13.14:/etc/yum.reposd.

2.编写文件,添加后端服务器并测试
[root@server12 etc]# cd ansible/
[root@server12 ansible]# ls
ansible.cfg hosts roles
[root@server12 ansible]# vim hosts
[root@server12 ansible]# grep -v ^# hosts | uniq
[test]
server13
[prod]
server14
###做免密操作
[root@server12 .ssh]# ssh-keygen
[root@server12 .ssh]# ssh-copy-id server13
[root@server12 .ssh]# ssh-copy-id server14
###测试
[root@server12 .ssh]# ansible all -m ping -k
[root@server12 .ssh]# ansible server13 -m ping -k
[root@server12 .ssh]# ansible test -m ping -k




3.建立普通用户并测试
[root@server12 ansible]# useradd devops
[root@server12 ansible]# id devops
uid=1000(devops) gid=1000(devops) groups=1000(devops)
[root@server12 ansible]# su - devops
[root@server13 .ssh]# useradd devops
[root@server13 .ssh]# id devops
uid=1000(devops) gid=1000(devops) groups=1000(devops)
[root@server13 .ssh]# passwd devops
[root@server14 ~]# useradd devops
[root@server14 ~]# id devops
uid=1000(devops) gid=1000(devops) groups=1000(devops)
[root@server14 ~]# passwd devops
用普通用户连接失败
[devops@server12 ~]$ ansible test -m ping -k

用root用户连接成功
[devops@server12 .ssh]$ ansible test -m ping -u root -k
免密操作


普通用户连接成功


4.以devops用户,sudo至root执行ping存活检测
设置sudo操作免密执行
[root@server13 ~]# visudo
[root@server14 ~]# visudo


执行sudo操作
[devops@server12 ansible]$ ansible all -m ping -b


5.配置文件优先级(默认root/ansible优先级最高)



三. ansible与正则表达式
匹配所有主机,all或*号功能相同。
ansible all –m ping
ansible "*" -m ping
ansible 172.25.13.* -m ping
对多台主机或多个组同时执行,相互之间用冒号分隔即可
ansible "test:prod" -m ping
在test组但不在prod组的主机,用感叹号表示
ansible 'test:!prod' -m ping
在webserver组和database组中同时存在的主机,用&符号表示
ansible "webservers:&database" -m ping
模糊匹配
*.example.com
www*.com:database









四.ansible常用模块
1.copy模块

操作失败

成功
2.user模块


3.yum模块
(1)安装apache


(2)编辑默认发布文件

(3)访问测试:

(4)更改服务端口,并开启服务



4.file模块
(1)修改文件权限为600
[devops@server12 ansible]$ ansible test -m file -a "dest=/etc/httpd/conf/httpd.conf mode=600"


(2)更改文件权限和拥有者以及所属组
[devops@server12 ansible]$ ansible test -m file -a "dest=/etc/httpd/conf/httpd.conf mode=600 owner=devops group=devops"


5.service模块
(1)开启防火墙
[devops@server12 ansible]$ ansible test -m service -a "name=firewalld state=started"

(2)在防火墙中添加http策略
立即生效
[devops@server12 ansible]$ ansible test -m firewalld -a "service=http state=enabled permanent=yes"


(3)添加https策略
[devops@server12 ansible]$ ansible test -m firewalld -a "service=https state=enabled permanent=yes immediate=yes"


(4)防火墙中添加8000端口
[devops@server12 ansible]$ ansible test -m firewalld -a "port=8000/tcp state=enabled permanent=yes immediate=yes"


(5)关闭8000端口
[devops@server12 ansible]$ ansible test -m firewalld -a "port=8000/tcp state=disabled permanent=yes immediate=yes"


(6)安装mariadb
[devops@server12 ansible]$ ansible prod -m yum -a "name=mariadb-server state=present"

(7)开启mariadb数据库
[devops@server12 ansible]$ ansible prod -m service -a "name=mariadb state=started enabled=yes"

(8)创建用户,授予权限
[devops@server12 ansible]$ ansible prod -m mysql_user -a "login_user=root login_password=westos name=lj password=westos priv='*.*:select host='%' state=present"

更多推荐




所有评论(0)