Ansible1.0

什么是Ansible
ansible是近年来越来越火的一款运维自动化工具,其主要功能是帮助运维实现IT工作的自动化、降低认为操作失误、提高业务自动化率、提升运维工作效率。
常用于软件部署自动化、配置自动化、管理自动化、系统化系统任务、持续集成等
常见的部署管理工具有Chef、Puppet、Ansible、SaltStack、Fabric

Ansible的安装
在阿里云官网中找到epel源
在这里插入图片描述
安装
在这里插入图片描述
然后执行以下命令进行替换
在这里插入图片描述
利用epel源查找ansible,然后进行安装
在这里插入图片描述

vim /etc/ansible/hosts
在这里插入图片描述
执行命令后发现不可执行,原因是没有进行免密
在这里插入图片描述
免密
在server1中生成密钥
在这里插入图片描述
将密钥发送给server2和server3
在这里插入图片描述
此时再执行命令,免密成功
在这里插入图片描述
all表示全部主机,用组名也可表示一个组,如:test就表示test组
在这里插入图片描述

Ansible的资源配置清单

在server1中创建新的用户
useradd devops
在devops用户中建立ansible目录
su - devops
mkdir ansible
此时使用普通用户身份不能调用ping命令去执行
在这里插入图片描述
使用-u(使用root身份)-k(向root用户询问密码)后可以使用普通用户调用ping命令
在这里插入图片描述
在server2和server3中创建devops用户,分别给用户设置密码
可以通过普通用户执行
在这里插入图片描述
但是只允许用一次
在这里插入图片描述
此时用ssh连接报错的主机即可继续使用
在这里插入图片描述
在这里插入图片描述
也可以通过root用普通用户的身份去使用
在这里插入图片描述
两者区别
普通用户的权限有限

将server1/etc/passwd拷贝到server2下的/tmp(-a 后加参数)
在这里插入图片描述
此时可以在server的/tmp看到passwd
在这里插入图片描述
也可在server1中使用命令直接查看server2中/tmp,此时也可以看到/tmp/passwd
在这里插入图片描述
当更改目录时会报错,是因为other用户对文件没有写权限
在这里插入图片描述

在普通用户的ansible目录下编写hosts文件
在这里插入图片描述
删除root用户下 /etc/ansible/hosts 的内容

编写ansible.cfg文件
在这里插入图片描述
在普通用户下生成免密
ssh-keygen
将密钥发送给server2和server3
ssh-copy-id 172.25.254.2
ssh-copy-id 172.25.254.3

ansible all -m ping命令测试成功表示发送成功

用普通用户身份可以使用但是root用户身份却不能使用,原因是因为远端主机没有配置sudo(-b表示用root用户身份)
在这里插入图片描述
在server2和server3中配置sudo
visudo
在这里插入图片描述
此时通过root用户也可以使用
在这里插入图片描述

省略-b
编写/ansible/ansible.cfg
在这里插入图片描述
此时就不需要加-b来执行
在这里插入图片描述
copy参数也可以
在这里插入图片描述
在这里插入图片描述
远程删除文件
在这里插入图片描述

将普通用户/ansible/的文件复制到root用户的/mnt下
cp -r /home/devops/ansible/ /mnt/
编写ansible.cfg
在这里插入图片描述
此时执行命令是以devops用户的身份执行而不是root
在这里插入图片描述
免密
将devops用户的密钥发送给server2和server3
ssh-copy-id devops@172.25.254.2
ssh-copy-id devops@172.25.254.3

cd /mnt/ansible
vim ansible.conf
在这里插入图片描述
-i 指定文件
在这里插入图片描述
vim ansible.conf
在这里插入图片描述
在这里插入图片描述
此时再用-i会覆盖

定义主机和组
中括号表示一个组,也表示一个范围
[webserver]
www[1:10].example.com
db-[a:f].example.com
定义主机变量
在playbook中使用是对主机进行个性化定制
[webserver]
web1 http_port=8080 maxRequestsPerChild=1024(不能在命令行中使用,只用于playbook)

定义组变量
[webserver]
server2
server3
[webserver:vars]
ntp_server=time1.aliyun.com

webserver组中的所有主机ntp_server值为time1.aliyun.com

定义组嵌套及组变量
[apache] [webserver:children]
server2 apache
[nginx] nginx
server3 [webserver:vars]
server4 ntp_server=time1.aliyun.com

组和组之间可以相互调用,并且可以向组中的主机指定变量。不过,这些变量只能在Ansible-playbook中使用,而Ansible不支持。

vim hosts
在这里插入图片描述
在这里插入图片描述
变量检索的位置
Inventory配置文件(默认/etc/ansible/hosts)
Playbook中vars定义的区域
Roles中vars目录下的文件
Roles同级目录group_vars和hosts_vars目录下的文件

匹配所有主机,all或*号功能相同
在这里插入图片描述
对多台主机或多个组同时执行,相互之间用冒号分割开即可
在这里插入图片描述
在test组但是不在prod组的主机,用感叹号表示
在这里插入图片描述
既在test组又在prod组
在这里插入图片描述

远程安装软件
ansible test -m dnf -a “name=httpd state=present” ##在server2上安装httpd
开启服务
ansible test -m service -a “name=httpd state=started”

ansible控制火墙
ansible test -m firewalld -a “service=http permanent=yes immediate=yes state=enabled”
在这里插入图片描述
curl 172.25.254.2(测试界面)
在这里插入图片描述
vim index.html
hello
ansible test -m copy -a “src=index.html dest=/var/www/html/” ##拷贝到server2
curl 172.25.254.2
在这里插入图片描述

在server2中,passwd的owner=root,group=root
在这里插入图片描述
ansible test -m file -a “dest=/tmp/passwd owner=root group=root” ##修改owner group
在这里插入图片描述
此时passwd的owner=root,group=root

ansible test -m file -a “dest=/tmp/passwd mode=600” ##修改权限
在这里插入图片描述

ansible test -m user -a “name=wxh” ##创建wxh用户
ansible test -m user -a “name=wxh state=absent” ##删除用户

远程在数据库中创建用户
先安装数据库
ansible test -m dnf -a “name=mariadb-server”
ansible test -m dnf -a “name=python3-PyMySQL.noarch”
开启数据库
ansible test -m service -a “name=mariadb state=started”
创建用户
ansible test -m mysql_user -a “name=wxh password=westos priv=’.:select’ state=present”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值