ansible 实战 之nginx代理tomcat集群

实验环境:

操作系统 contos7.4
node 192.168.137.130 ansible
node1 192.168.137.131 nginx
node2 192.168.137.132 tomcatA
node3 192.168.137.133 tomcatB

开始

配置主机名解析
[root@node /]# vi /etc/hosts

192.168.137.130 node.cwf.com node
192.168.137.131 node1.cwf.com node1
192.168.137.132 node2.cwf.com node2
192.168.137.133 node3.cwf.com node3

配置主机将秘钥认证通信

ssh-keygen -t rsa -P ""
ssh-copy-id -i ~/.ssh/id_rsa.pub node1


安装ansible

  yum -y install ansible -y

添加主机到主机清单文件中

[root@node /]# vi /etc/ansible/hosts

[lb]
node1
[tomcat]
node2
node3
node3

查看主机清单主机的可用主机

[root@node /]# ansible all --list-hosts
  hosts (3):
    node1
    node2
    node3
[root@node /]# ansible lb --list-hosts
  hosts (1):
    node1
[root@node /]# ansible tomcat --list-hosts
  hosts (2):
    node2
    node3

定义roles目录

[root@node /]# mkdir -pv /etc/ansible/roles/{nginx,tomcat,jdk}/{files,templates,tasks,handlers,vars,meta,default}
mkdir: created directory ‘/etc/ansible/roles/nginx’
mkdir: created directory ‘/etc/ansible/roles/nginx/files’
mkdir: created directory ‘/etc/ansible/roles/nginx/templates’
mkdir: created directory ‘/etc/ansible/roles/nginx/tasks’
mkdir: created directory ‘/etc/ansible/roles/nginx/handlers’
mkdir: created directory ‘/etc/ansible/roles/nginx/vars’
mkdir: created directory ‘/etc/ansible/roles/nginx/meta’
mkdir: created directory ‘/etc/ansible/roles/nginx/default’
mkdir: created directory ‘/etc/ansible/roles/tomcat’
mkdir: created directory ‘/etc/ansible/roles/tomcat/files’
mkdir: created directory ‘/etc/ansible/roles/tomcat/templates’
mkdir: created directory ‘/etc/ansible/roles/tomcat/tasks’
mkdir: created directory ‘/etc/ansible/roles/tomcat/handlers’
mkdir: created directory ‘/etc/ansible/roles/tomcat/vars’
mkdir: created directory ‘/etc/ansible/roles/tomcat/meta’
mkdir: created directory ‘/etc/ansible/roles/tomcat/default’
mkdir: created directory ‘/etc/ansible/roles/jdk’
mkdir: created directory ‘/etc/ansible/roles/jdk/files’
mkdir: created directory ‘/etc/ansible/roles/jdk/templates’
mkdir: created directory ‘/etc/ansible/roles/jdk/tasks’
mkdir: created directory ‘/etc/ansible/roles/jdk/handlers’
mkdir: created directory ‘/etc/ansible/roles/jdk/vars’
mkdir: created directory ‘/etc/ansible/roles/jdk/meta’
mkdir: created directory ‘/etc/ansible/roles/jdk/default’

编辑nginx角色的任务文件

[root@node /]# cd /etc/ansible/roles/nginx/

- name: install nginx
  yum: name=nginx state=latest
- name: install conf
  copy: src=lb.conf dest=/etc/nginx/conf.d/
  tags: conf
  notify: restart nginx
- name: start nginx
  service: name=nginx state=started enabled=yes

编辑handlers触发文件

[root@node nginx]# vim handlers/main.yml
- name: restart nginx
  service: name=nginx state=restarted

定义Nginx的虚拟主机文件

[root@node nginx]# vim files/lb.conf
[root@node nginx]# cat files/lb.conf

upstream tcsrvs {
        server node2.cwf.com:8080;
        server node3.cwf.com:8080;
}
server {
        listen 80;
        server_name node1.cwf.com;
        location / {
                proxy_pass http://tcsrvs;
        }
}

配置jdk角色
配置jdk角色的任务文件

[root@node roles]# cd jdk/
[root@node jdk]# ls
default  files  handlers  meta  tasks  templates  vars
[root@node jdk]# vim tasks/main.yml
[root@node jdk]# cat tasks/main.yml
- name: install openjdk
  yum: name=java-{{ version }}-openjdk-devel state=latest  #{{ version }}使用变量
- name: install env file                #定义jdk程序的环境文件
  copy: src=java.sh dest=/etc/profile.d/

编辑jdk的程序环境文件

vim files/java.sh
export JAVA_HOME=/usr

配置tomcat的角色
编辑tomcat的任务文件

[root@node tomcat]# vim tasks/main.yml
- name: install package
  yum: name={{ item }} state=latest
  with_items:
  - tomcat
  - tomcat-admin-webapps
  - tomcat-webapps
  - tomcat-docs-webapp
- name: start tomcat
  service: name=tomcat state=started enabled=yes

编辑playbook样本文件,调用nginx角色

[root@node roles]# vim nginx.yml

- hosts: lb
  remote_user: root
  roles:
  - nginx
- hosts: tomcat
  remote_user: root
  roles:
  - { role: jdk,version: 1.8.0 }  #调用jdk角色及定义version变量
  - tomcat

注意 配网络源 本地 源 可能没有 tomcat 的包
执行nginx.yml样本文件

[root@node roles]# ansible-playbook nginx.yml

PLAY [lb] *******************************************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************
ok: [node1]

TASK [nginx : install nginx] ************************************************************************************************************
ok: [node1]

TASK [nginx : install conf] *************************************************************************************************************
ok: [node1]

TASK [nginx : start nginx] **************************************************************************************************************
ok: [node1]

PLAY [tomcat] ***************************************************************************************************************************

TASK [Gathering Facts] ******************************************************************************************************************
ok: [node3]
ok: [node2]

TASK [jdk : install openjdk] ************************************************************************************************************
changed: [node3]
changed: [node2]

TASK [jdk : install env file] ***********************************************************************************************************
ok: [node2]
ok: [node3]

TASK [tomcat : install package] *********************************************************************************************************
[DEPRECATION WARNING]: Invoking "yum" only once while using a loop via squash_actions is deprecated. Instead of using a loop to supply
multiple items and specifying `name: "{{ item }}"`, please use `name: ['tomcat', 'tomcat-admin-webapps', 'tomcat-webapps', 'tomcat-docs-
webapp']` and remove the loop. This feature will be removed in version 2.11. Deprecation warnings can be disabled by setting
deprecation_warnings=False in ansible.cfg.
[DEPRECATION WARNING]: Invoking "yum" only once while using a loop via squash_actions is deprecated. Instead of using a loop to supply
multiple items and specifying `name: "{{ item }}"`, please use `name: ['tomcat', 'tomcat-admin-webapps', 'tomcat-webapps', 'tomcat-docs-
webapp']` and remove the loop. This feature will be removed in version 2.11. Deprecation warnings can be disabled by setting
deprecation_warnings=False in ansible.cfg.
changed: [node2] => (item=[u'tomcat', u'tomcat-admin-webapps', u'tomcat-webapps', u'tomcat-docs-webapp'])
changed: [node3] => (item=[u'tomcat', u'tomcat-admin-webapps', u'tomcat-webapps', u'tomcat-docs-webapp'])

TASK [tomcat : start tomcat] ************************************************************************************************************
changed: [node2]
changed: [node3]

PLAY RECAP ******************************************************************************************************************************
node1                      : ok=4    changed=0    unreachable=0    failed=0
node2                      : ok=5    changed=3    unreachable=0    failed=0
node3                      : ok=5    changed=3    unreachable=0    failed=0

在这里插入图片描述
浏览器访问 可以 成功 !!!!!!!!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值