负载均衡
安装haproxy
编写playbook.yml
cd /etc/haproxy/
编写haproxy.cfg
添加监控及认证
其它
systemctl start haproxy
查看端口可以看到80端口
关闭火墙
此时在网页中访问172.25.254.1/status看到server2与server3的后台状况
当关闭server2的httpd时,server2的后台条会变红
使用curl 172.25.254.1命令也只能看到server3
当再次执行playbook.yml时,会再次看到后台条变绿,使用curl 172.25.254.1命令看到server2和server3
编写haproxy.yml
开启火墙
cp /etc/haproxy/haproxy.cfg .
执行ansible-playbook haproxy.yml
此时仍可以在网页中访问到172.25.254.1/status
魔术变量(通过其自动添加节点)
cp haproxy.cfg haproxy.cfg.j2
vim haproxy.cfg.j2
在playbook.yml的最后加上
执行ansible-playbook playbook.yml
此时在/etc/haproxy/haproxy.xfg中以及写好了
新创建一个虚拟机server4
建立用户devops并让其密码为westos
visudo
在server1中,将公钥发送给server4的devops用户
然后编写/mnt/ansible/hosts
vim haproxy.yml
注:restarted换成reloaded更好,损耗更小
然后执行 ansible-playbook playbook.yml
此时就可以得到server4的后台
cd /mnt/ansible
mkdir group_vars
cd group_vars
mkdir webserver
cd webserver
vim vars
vim playbook.yml
scp 172.25.254.2:/etc/httpd/conf/httpd.conf httpd.conf.j2
vim httpd.conf.j2
执行ansible-playbook playbook.yml
安装tree,执行tree . 可以看到/mnt/ansible的结构
mkdir host_vars/server2
touch host_vars/server2/vars
touch host_vars/server2/vault
vim host_vars/server2/vars
执行ansible-playbook playbook.yml
此时发现几个主机的端口号并没有变为80
vim playbook.yml
执行ansible-playbook playbook.yml
此时发现端口号变为80
playbook.yml的优先级最高vim playbook.yml
vim host_vars/server2/vars
执行ansible-playbook playbook.yml
此时发现端口号变为8080cd host_vars/
mv server2/ 172.25.254.2 ##将文件名与hosts中的内容对应
cd 172.25.254.2/
vim vault
passwd: westos
对文件进行加密
ansible-vault encrypt vault
此时查看vault文件时就不能看到内容
vim playbook.yml
执行ansible-playbook playbook.yml --ask-vault-pass
此时在server2中查看/etc/shadow就是加密的
vim host_vars/172.25.254.2/vars
vim playbook.yml
此时执行ansible-playbook playbook.yml --ask-vault-pass就会跳过server2和server4
vim playbook.yml
vim group_vars/webserver/vars
vim host_vars/172.25.254.2/vars
执行ansible-playbook playbook.yml --ask-vault-pass
此时server2的端口为8080,server3和server4的端口号为80
主机变量高于组变量
自注册变量
vim haproxy.cfg.j2
vim playbook.yml
echo westos > web_pass
chmod 600 web_pass
ansible-playbook playbook.yml --vault-password-file web_pass
此时在/etc/haproxy/haproxy.cfg中就自动修改
block
vim playbook.yml
执行ansible-playbook playbook.yml --vault-password-file web_passvim block.yml
ansible-playbook block.yml
当block有错误时,直接输出rescue的内容vim block.yml
ignore会忽略错误继续执行
vim block.yml
always当存在错误会执行
当忽略错误时也会执行
vim block.yml
自定义变量
vim test.yml
ansible-playbook test.yml
注册变量
vim test.yml
ansible-playbook test.ymlvim test.yml
ansible-playbook test.ymlh=后可以得到westos
角色
mkdir roles
vim ansible.cfg
ansible-galaxy list就可以列出
cd roles/
ansible-galaxy role init apache ##生成新的目录
cd /roles/apache
vim tasks/main.yml
vim handlers/main.yml
cp /mnt/ansible/httpd.conf.j2 templates/vim playbook1.yml
ansible-playbook playbook1.yml
此时server2的端口号没变
vim roles/apache/vars/main.yml
此时server2的端口号变为80
说明main.yml的优先级最高cd roles/
ansible-galaxy init haproxy
cd haproxy/
vim tasks/main.yml
vim handlers/main.yml
cp /mnt/ansible/haproxy.cfg.j2 templates/
vim playbook1.yml
ansible-playbook playbook1.yml