• ansible-role安装nginx,keepalived,tomcat


    role下载地址
    链接:https://pan.baidu.com/s/1DVdt1iykf8z9kqlaqW9p6Q 
    提取码:cnkx 
    复制这段内容后打开百度网盘手机App,操作更方便哦

    架构

    roles目录结构

    [root@localhost roles]# tree
    .
    ├── keepalived
    │   ├── files
    │   ├── handlers
    │   │   └── main.yml
    │   ├── tasks
    │   │   └── main.yml
    │   ├── templates
    │   │   ├── backup_keepalived.conf.j2  #主keepalived配置文件
    │   │   └── master_keepalived.conf.j2  #从keepalived配置文件
    │   └── vars
    │       └── main.yml
    ├── nginx
    │   ├── default
    │   │   └── main.yml
    │   ├── files
    │   │   ├── nginx-1.16.0.tar.gz    #nginx源码包
    │   │   └── nginx.service            #systemctl接管nginx服务文件
    │   ├── handlers
    │   │   └── main.yml
    │   ├── meta
    │   │   └── main.yml
    │   ├── tasks
    │   │   └── main.yml
    │   ├── templates
    │   │   └── nginx.conf.ji2           #nginx配置文件
    │   └── vars
    │       └── main.yml
    ├── site.yml
    └── tomcat
        ├── default
        │   └── main.yml
        ├── files
        │   ├── apache-tomcat-8.5.37.tar.gz   #tomcat二进制包
        │   └── jdk-8u144-linux-x64.gz          #jdk二进制包
        ├── handlers
        │   └── main.yml
        ├── meta
        │   └── main.yml
        ├── tasks
        │   └── main.yml
        ├── templates
        │   ├── java.sh.j2                    #初始java环境变量文件
        │   ├── setclasspath.sh.j2        #tomcat设置java环境变量脚本
        │   └── tomcat.service.j2         #systemctl接管tomcat服务文件
        └── vars
            └── main.yml  

    site.xml

    - hosts: lb
      remote_user: root
      roles:
      - nginx
    
    - hosts: server
      remote_user: root
      roles:
      - tomcat
    
    - hosts: lb
      remote_user: root
      roles:
      - keepalived 

    nginx roles

    • tasks/main.yml
    #安装gcc环境
    - name: install gcc env
      yum: name={{ item }} state=present 
      with_items:
      - gcc
      - patch
      - libffi-devel
      - python-devel
      - zlib-devel
      - bzip2-devel
      - openssl-devel 
      - ncurses-devel
      - sqlite-devel
      - readline-devel
      - tk-devel
      - gdbm-devel
      - libpcap-devel
      - xz-devel
      - openssl
      - openssl-devel
    
    #拷贝nginx源码包到目标机器
    - name: unarchive nginx.tar.gz
      unarchive: src=nginx-1.16.0.tar.gz dest=/tmp/
      tags:
      - jieya
    
    #编译nginx
    - name: bianyi nginx
      shell: cd /tmp/nginx-1.16.0 && ./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module && make && make install
      tags:
      - bianyi
    
    #复制systemctl接管nginx的服务文件
    - name: copy nginx.service
      copy: src=nginx.service dest=/usr/lib/systemd/system/nginx.service
    
    #重载systemd
    - name: systemctl daemon-reload  
      shell: /usr/bin/systemctl daemon-reload
    
    #复制nginx配置文件
    - name: copy nginx.conf
      template: src=nginx.conf.ji2 dest=/usr/local/nginx/conf/nginx.conf
      notify: 
      - reload-nginx
      tags:
      - reload nginx
    
    #启动nginx
    - name: start nginx
      service: name=nginx state=started enabled=true  
    • handlers/main.yml
    - name: reload-nginx
      shell: name=nginx state=reloaded
    
    • templates/main.yml:这个配置文件需要更具自己业务对应更改,不要复制下面的配置文件,主要是为了替换里面的内容
    worker_processes  {{ ansible_processor_vcpus }};
    events {
        worker_connections  1024;
    }
    http {
        include       mime.types;
        default_type  application/octet-stream;
        sendfile        on;
        keepalive_timeout  65;
        upstream tomcat {
            server {{ TOMCAT_SERVER1 }};
            server {{ TOMCAT_SERVER2 }};
        }
        server {
            listen       80;
            server_name  localhost;
            location / {
                proxy_pass http://tomcat;
            }
            error_page   500 502 503 504  /50x.html;
            location = /50x.html {
                root   html;
            }
        }
    }
    
    • vars/main.yml
    TOMCAT_SERVER1: 192.168.2.5:8080
    TOMCAT_SERVER2: 192.168.2.6:8080
    

     

    Tomcat roles

    • tasks/main.yml 
    #复制jdk到目标主机
    - name: cp jdk1.8
      unarchive: src=jdk-8u144-linux-x64.gz dest=/usr
    
    #创建链接
    - name: jdk setup
      file: src=/usr/jdk1.8.0_144 path={{ JAVA_HOME }} state=link
    
    #配置java环境变量脚本
    - name: jdk env
      template: src=java.sh.j2 dest=/etc/profile.d/java.sh 
    
    #加载环境变量
    - name: source java
      shell: source /etc/profile.d/java.sh
    
    #复制tomcat到目标主机
    - name: cp tomcat
      unarchive: src=apache-tomcat-8.5.37.tar.gz dest=/usr/
    
    #创建链接
    - name: tomcat setup
      file: src=/usr/apache-tomcat-8.5.37 path={{ CATALINA_HOME }} state=link
    
    #配置tomcat环境变量
    - name: tomcat env
      template: src=setclasspath.sh.j2 dest={{ CATALINA_HOME }}/bin/setclasspath.sh
      
    #复制systemd接管tomcat的服务文件
    - name: cp tomcat.service
      template: src=tomcat.service.j2 dest=/usr/lib/systemd/system/tomcat.service
    
    #重载systemd
    - name: daemonreload
      shell: /usr/bin/systemctl daemon-reload
    
    #启动tomcat
    - name: start tomcat
      service: name=tomcat state=started enabled=true
    
    • templates/java.sh.j2
    export JAVA_HOME={{ JAVA_HOME }}
    export PATH=$JAVA_HOME/bin:$PATH
    
    • /templates/setclasspath.sh.j2
    #!/bin/sh
    export JAVA_HOME={{ JAVA_HOME }}
    # Licensed to the Apache Software Foundation (ASF) under one or more
    #.....
    #.....
    #只需要配置java_home,其他的默认
    
    • templates/tomcat.service.j2
    [Unit]
    Description=The nginx HTTP and reverse proxy server
    After=network.target remote-fs.target nss-lookup.target
    
    [Service]
    Type=forking
    ExecStart={{ CATALINA_HOME }}/bin/startup.sh
    ExecStop={{ CATALINA_HOME }}/bin/shutdown.sh
    PrivateTmp=true
    
    [Install]
    WantedBy=multi-user.target
    
    • vars/main.yml
    JAVA_HOME: /usr/java
    CATALINA_HOME: /usr/tomcat
    

      

     Keepalived roles

    • tasks/main.yml
    #安装keepalived
    - name: install keepalived
      yum: name=keepalived state=present
    
    #复制主配置文件
    - name: copy master_conf
      template: src=master_keepalived.conf.j2 dest=/etc/keepalived/keepalived.conf
      when:  ansible_default_ipv4.address  == "192.168.2.3"
      notify:
      - restart keepalived
    
    #复制从配置文件
    - name: copy backup_conf
      template: src=backup_keepalived.conf.j2 dest=/etc/keepalived/keepalived.conf
      when:  ansible_default_ipv4.address  == "192.168.2.4"
      notify:
      - restart keepalived
    
    #重启keepalived
    - name: start keepalived
      service: name=keepalived state=started
    
    • templates/master_keepalived.conf.j2
    ! Configuration File for keepalived
     
    global_defs {
       #notification_email {
       #  acassen@firewall.loc
       #  failover@firewall.loc
       #  sysadmin@firewall.loc
       #}
       #notification_email_from Alexandre.Cassen@firewall.loc
       #smtp_server 192.168.200.1
       #smtp_connect_timeout 30
       router_id {{ master_router_id }}
       vrrp_skip_check_adv_addr
       #vrrp_strict
       vrrp_garp_interval 0
       vrrp_gna_interval 0
    }
     
    vrrp_instance VI_1 {
        state MASTER
        interface {{ ansible_default_ipv4.alias }}
        virtual_router_id 51
        priority 100
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            {{ virtual_ipaddress }}
        }
    }
    
    • templates/backup_keepalived.conf.j2
    ! Configuration File for keepalived
     
    global_defs {
       #notification_email {
       #  acassen@firewall.loc
       #  failover@firewall.loc
       #  sysadmin@firewall.loc
       #}
       #notification_email_from Alexandre.Cassen@firewall.loc
       #smtp_server 192.168.200.1
       #smtp_connect_timeout 30
       router_id {{ backup_router_id }}
       vrrp_skip_check_adv_addr
       #vrrp_strict
       vrrp_garp_interval 0
       vrrp_gna_interval 0
    }
     
    vrrp_instance VI_1 {
        state BACKUP
        interface {{ ansible_default_ipv4.alias }}
        virtual_router_id 51
        priority 90
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        virtual_ipaddress {
            {{ virtual_ipaddress }}
        }
    }
    • vars/main.yml
    virtual_ipaddress: 192.168.2.88
    
    master_router_id: MA
    master_priority: 100
    master_ipaddress: 192.168.2.3
    master_state: MASTER
    
    backup_router_id: BA
    backup_priority: 99
    backup_ipaddress: 192.168.2.4
    backup_state: BACKUP
    
    • handlers/main.yml
    - name: restart keepalived
      service: name=keepalived state=restarted
    

      

    初学linux,每学到一点东西就写一点,如有不对的地方,恳请包涵!
  • 相关阅读:
    Java动态绑定和静态绑定-多态
    Java方法内联
    Java反射机制及原理
    Jvm-类加载机制
    Zookeeper 源码解析-环境准备
    SpringMvc源码解析
    Java虚拟机的意义
    起跑线
    js动态生成html,onclick事件失效解决方法
    虚拟机能ping通,但是telnet某个端口却不行
  • 原文地址:https://www.cnblogs.com/forlive/p/12591761.html
Copyright © 2020-2023  润新知