ansible的安装

将下载的包全部安装

ansible --version查看版本

在主节点创建用户devops

切换到devops用户在家目录下创建ansible目录

创建ansible.cfg文件,内容如下,意思是访问inventory文件就访问当前目录下的inventory

创建inventory文件

在主节点ssh-keygen免密操作

两个子节点创建用户devops

(以server5和server6作为子节点)

添加密码

在主节点(server3)ssh-copy-id 子节点

主节点

ansible all -m ping 连接两个子节点

 

ansible all -m ping -u root 尝试以root用户连接两个子节点

root用户不可用

ansible all -m ping -u devops -b 以devops用户身份连接以root,切换root测试

依旧是权限的问题

ansible test -m copy -a "src=/etc/passwd dest=/tmp/passwd" 对test这个子节点将其/etc/passwd copy到/tmp下

ansible test -a “ls/tmp”  查看test节点的/tmp

ansible test -a “rm/tmp/passwd”     删除test节点的/tmp/passwd警告但是删除成功

ansible test -m copy -a “src=/etc/passwd dest=/mnt/passwd” 对/mnt没有权限,tmp是对普通用户也有操作权限

添加权限,在两个子节点用户

vim/etc/sudoers

将devops这个普通用户的权限设置的与超户一致,并添加免密登陆

以超户身份修改在修改完毕退出的时候要添加!

ansible test -m copy -a "src=/etc/passwd dest=/mnt/passwd" -b 就可以了

cat /etc/ansible/ansible.cfg

复制 下面几行

添加到自己写的ansible.cfg将注释去掉

这样也是对权限的一种提升

子节点的匹配

ansible 'test:!prod' -m ping 匹配在test中不在prod中的

ansible 'test:&prod' -m ping

ansible '&test:prod' -m ping 匹配在test中也在prod中的

将test的prod两个子节点添加到同一个组中,组的名字随意,添加到一起的写法如下

 

很形象的写法

ansible test -m yum -a "name=httpd state=present" 对test匹配项安装httpd

在test对应的主机下面查看

ansible test -m shell -a “rpm -q httpd”查看httpd的安装信息

ansible tesrt -m yum -a "name=httpd state=absent“卸载httpd

ansible tesrt -m yum -a "name=httpd state=latest“ 安装最新版本

其实安装http调用的是ansible里的yum模块,所以下面来看一下模块

ansible-doc -l 查看所有的模块

ansible tesrt -m yum -a "name=mariadb-server state=present“ 安装mariadb

ansible tesrt -m yum -a "name=MySQL-python state=present“ 安装mysql的远程连接

ansible test -m service -a "name=mariadb state=started" 启动mariadb

ansible test -m mysql_user -a "name=wlt password=westos priv=*.*:select host='%' state=present“ 为mysql创建用户给与查看权限

在其他主机登陆测试

playbook

在主节点上写playbook文件

因为server6上面没有创建过东西所以指定server6

ansible-playbook playbook.yml  --syntax-check  检验错误

这就是写错了

这样就是没问题了

ansible-playbook playbook.yml  --list-task  查看需要执行的动作

ansible-playbook playbook.yml  --list-hosts  动作节点ip

ansible-playbook playbook.yml  执行

再次执行只是省掉了安装过程以及启动,结果一样,会看到没有出现changes,没有出现变更

由于yml文件的特殊性将Tab键的缩进指定为两个空格

vim .vimrc

autocmd FileType yaml setlocal ai ts=2 sw=2 et

再tab键补齐的时候就会缩进两个空格

将playbook.yml修改,可以进行对配置的修改以及修改完成之后的重启

写任务和触发器

创建files文件夹 将http.conf文件放到这个文件夹下

 

 

修改files下的httpd.conf的监听端口

执行

查看

在server6http的监听端口就是8080

配置火墙

首先就是启动

再就是添加http到策略里

在server6中可以自己添加index.html

或者在主节点的playbook.yml中配置

在安装 httpd下面添加

在files下创建index.html

 

本机连接测试

首先将主节点也与副节点一致,做ssh-copy-id免密

将devops用户也写进/etc/sudoers

在playbook.yml文件末尾添加

因为是顺序执行,所以写在最后

测试

因为只是测试成功与否所以显示没错即可

模版的使用

在ansible文件夹下创建模版的文件夹mkdir templates

将files文件夹下的httpd.conf复制过来

将文件重命名为httpd.conf.j2

将playbook.yml文件修改

因为性质一样所以就没什么需要修改的

传参

将httpd监控的端口作为参数传到文件中

将模版修改

修改playbook.yml

测试

没出错

获取副节点主机信息

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐