将下载的包全部安装
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
测试
没出错
获取副节点主机信息