集成Ansible,实现发布多台Web服务器[六]
集成Ansible,实现发布多台Web服务器

主机清单:
# vi /etc/ansible/hosts [webservers] 192.168.230.130 192.168.230.131
# uncomment this to disable SSH key host checking
编辑 /etc/ansible/ansible.cfg去掉host_key_checking = False的注释
[root@linux-node1 ~]# ansible webservers -m shell -a 'ip addr' -uroot -k
[root@linux-node1 jenkins_home]# cat playbook.yaml - hosts: webservers tasks: - name: 拷贝文件 copy: src=/etc/hosts dest=/tmp - name: 查看主机内存 shell: free -m register: result #将结果注册到变量 - debug: msg={{result.stdout_lines}} #然后将结果再打印出来
Jenkins执行Playbook

配置私钥,之前配置过192.168.230.131
拷贝公钥到130机器,130同时也是jenkins
ssh-copy-id root@192.168.130.130
测试指定私钥登陆
同时130也部署了网站程序
[root@linux-node1 tomcat]# pwd
/usr/local/tomcat
端口改为8081
cd /usr/local/tomcat/conf
vim server.xml 找到如下配置改为8081
<Connector port="8081" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
配置完以后测试
控制台输出
自动发布多台服务器
[root@linux-node1 jenkins_home]# pwd /opt/jenkins_home [root@linux-node1 jenkins_home]# cat playbook.yaml --- - hosts: "{{ env }}" #在jenkins变量传到这里 gather_facts: no tasks: - name: 推送部署包到远程服务器 copy: src="{{ item }}" dest=/tmp/ROOT.war with_fileglob: - "/var/lib/jenkins/workspace/java-demo/target/*.war" - name: 部署新程序并重启Tomcat shell: | tomcat=/usr/local/tomcat cd $tomcat/webapps mv *.war /data/backup/$(date +"%F_%T")_ROOT.war mv /tmp/*.war $tomcat/webapps/ROOT.war pid=$(ps -ef |grep $tomcat |egrep -v 'grep' |awk '{print $2}') [ -n "$pid" ] && kill -9 $pid nohup /usr/local/tomcat/bin/startup.sh ...
在Invoke Ansible Playbook高级里边指定key和Value
参数化构建里边添加选项参数
选项可以选择多个,指定多个组,可以进行单个发布,没问题再依次部署
开始构建
控制台输出
查看node1 是否启动
[root@linux-node1 jenkins_home]# netstat -ntpl|grep 8081
tcp6 0 0 :::8081 :::* LISTEN 29978/java
拷贝备份也正常
[root@linux-node1 jenkins_home]# ls /data/backup/
2022-07-01_18:42:31_ROOT.war
查看node2
[root@linux-node2 ~]# netstat -ntpl|grep 8081
tcp6 0 0 :::8081 :::* LISTEN 1436/java
nginx代理2台web,就可以通过nginx去访问,前面再加keepalived就可以实现高可用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示