负载均衡

安装haproxy

ansible 升级 ansible 3.0_vim


编写playbook.yml

ansible 升级 ansible 3.0_ansible 升级_02

cd /etc/haproxy/

编写haproxy.cfg

添加监控及认证

ansible 升级 ansible 3.0_ansible 升级_03


其它

ansible 升级 ansible 3.0_apache_04


systemctl start haproxy

查看端口可以看到80端口

ansible 升级 ansible 3.0_vim_05


关闭火墙

此时在网页中访问172.25.254.1/status看到server2与server3的后台状况

ansible 升级 ansible 3.0_ansible 升级_06


当关闭server2的httpd时,server2的后台条会变红

ansible 升级 ansible 3.0_ansible 升级_07


使用curl 172.25.254.1命令也只能看到server3

ansible 升级 ansible 3.0_linux_08


当再次执行playbook.yml时,会再次看到后台条变绿,使用curl 172.25.254.1命令看到server2和server3

ansible 升级 ansible 3.0_apache_09

编写haproxy.yml

ansible 升级 ansible 3.0_ansible 升级_10


开启火墙

cp /etc/haproxy/haproxy.cfg .

执行ansible-playbook haproxy.yml

ansible 升级 ansible 3.0_ansible 升级_11


此时仍可以在网页中访问到172.25.254.1/status

ansible 升级 ansible 3.0_linux_12

魔术变量(通过其自动添加节点)

cp haproxy.cfg haproxy.cfg.j2

vim haproxy.cfg.j2

ansible 升级 ansible 3.0_linux_13


在playbook.yml的最后加上

ansible 升级 ansible 3.0_linux_14


执行ansible-playbook playbook.yml

ansible 升级 ansible 3.0_apache_15


此时在/etc/haproxy/haproxy.xfg中以及写好了

ansible 升级 ansible 3.0_apache_16


新创建一个虚拟机server4

建立用户devops并让其密码为westos

visudo

在server1中,将公钥发送给server4的devops用户

然后编写/mnt/ansible/hosts

ansible 升级 ansible 3.0_apache_17


vim haproxy.yml

ansible 升级 ansible 3.0_vim_18


注:restarted换成reloaded更好,损耗更小

然后执行 ansible-playbook playbook.yml

此时就可以得到server4的后台

ansible 升级 ansible 3.0_vim_19


cd /mnt/ansible

mkdir group_vars

cd group_vars

mkdir webserver

cd webserver

vim vars

ansible 升级 ansible 3.0_端口号_20


vim playbook.yml

ansible 升级 ansible 3.0_linux_21


scp 172.25.254.2:/etc/httpd/conf/httpd.conf httpd.conf.j2

vim httpd.conf.j2

ansible 升级 ansible 3.0_ansible 升级_22


执行ansible-playbook playbook.yml

安装tree,执行tree . 可以看到/mnt/ansible的结构

ansible 升级 ansible 3.0_vim_23


mkdir host_vars/server2

touch host_vars/server2/vars

touch host_vars/server2/vault

vim host_vars/server2/vars

ansible 升级 ansible 3.0_apache_24


执行ansible-playbook playbook.yml

此时发现几个主机的端口号并没有变为80

vim playbook.yml

ansible 升级 ansible 3.0_vim_25


执行ansible-playbook playbook.yml

此时发现端口号变为80

playbook.yml的优先级最高vim playbook.yml

ansible 升级 ansible 3.0_端口号_26


vim host_vars/server2/vars

ansible 升级 ansible 3.0_linux_27


执行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文件时就不能看到内容

ansible 升级 ansible 3.0_端口号_28


vim playbook.yml

ansible 升级 ansible 3.0_apache_29


执行ansible-playbook playbook.yml --ask-vault-pass

此时在server2中查看/etc/shadow就是加密的

ansible 升级 ansible 3.0_ansible 升级_30


vim host_vars/172.25.254.2/vars

ansible 升级 ansible 3.0_端口号_31


vim playbook.yml

ansible 升级 ansible 3.0_apache_32


此时执行ansible-playbook playbook.yml --ask-vault-pass就会跳过server2和server4

ansible 升级 ansible 3.0_linux_33


vim playbook.yml

ansible 升级 ansible 3.0_端口号_34


vim group_vars/webserver/vars

vim host_vars/172.25.254.2/vars

ansible 升级 ansible 3.0_apache_35


执行ansible-playbook playbook.yml --ask-vault-pass

此时server2的端口为8080,server3和server4的端口号为80

ansible 升级 ansible 3.0_端口号_36


ansible 升级 ansible 3.0_端口号_37


ansible 升级 ansible 3.0_ansible 升级_38


主机变量高于组变量

自注册变量

vim haproxy.cfg.j2

ansible 升级 ansible 3.0_ansible 升级_39


vim playbook.yml

ansible 升级 ansible 3.0_端口号_40


echo westos > web_pass

chmod 600 web_pass

ansible-playbook playbook.yml --vault-password-file web_pass

此时在/etc/haproxy/haproxy.cfg中就自动修改

ansible 升级 ansible 3.0_端口号_41

block

vim playbook.yml

ansible 升级 ansible 3.0_端口号_42


执行ansible-playbook playbook.yml --vault-password-file web_passvim block.yml

ansible 升级 ansible 3.0_ansible 升级_43


ansible-playbook block.yml

ansible 升级 ansible 3.0_linux_44


当block有错误时,直接输出rescue的内容vim block.yml

ansible 升级 ansible 3.0_linux_45


ignore会忽略错误继续执行

ansible 升级 ansible 3.0_apache_46


vim block.yml

ansible 升级 ansible 3.0_端口号_47


always当存在错误会执行

ansible 升级 ansible 3.0_linux_48


当忽略错误时也会执行

vim block.yml

ansible 升级 ansible 3.0_vim_49


ansible 升级 ansible 3.0_端口号_50

自定义变量

vim test.yml

ansible 升级 ansible 3.0_apache_51


ansible-playbook test.yml

注册变量

vim test.yml

ansible 升级 ansible 3.0_vim_52


ansible-playbook test.ymlvim test.yml

ansible 升级 ansible 3.0_端口号_53


ansible-playbook test.ymlh=后可以得到westos

ansible 升级 ansible 3.0_apache_54

角色

mkdir roles

vim ansible.cfg

ansible 升级 ansible 3.0_apache_55


ansible-galaxy list就可以列出

ansible 升级 ansible 3.0_端口号_56


cd roles/

ansible-galaxy role init apache ##生成新的目录

ansible 升级 ansible 3.0_apache_57


cd /roles/apache

vim tasks/main.yml

ansible 升级 ansible 3.0_apache_58


vim handlers/main.yml

ansible 升级 ansible 3.0_linux_59


cp /mnt/ansible/httpd.conf.j2 templates/vim playbook1.yml

ansible 升级 ansible 3.0_端口号_60


ansible-playbook playbook1.yml

此时server2的端口号没变

vim roles/apache/vars/main.yml

ansible 升级 ansible 3.0_端口号_61


此时server2的端口号变为80

说明main.yml的优先级最高cd roles/

ansible-galaxy init haproxy

cd haproxy/

vim tasks/main.yml

ansible 升级 ansible 3.0_vim_62


vim handlers/main.yml

ansible 升级 ansible 3.0_ansible 升级_63


cp /mnt/ansible/haproxy.cfg.j2 templates/

vim playbook1.yml

ansible 升级 ansible 3.0_端口号_64


ansible-playbook playbook1.yml