SaltStack部署实践(3) - lamp环境搭建

目录

一、lamp目录规划

#创建模块与配置文件存放目录

#准备分发到minion节点的配置文件

二、apache部署

三、php部署

四、mysql部署

五、写入top file,执行高级状态

六、配置各节点httpd监听本机ip

#设置jinja变量

#确认grains正常获取节点信息

#配置sls文件调取变量值

#节点监听地址变为自身ip


一、lamp目录规划

#创建模块与配置文件存放目录

[root@linux-node1 prod]# pwd
/srv/salt/prod
[root@linux-node1 prod]# mkdir -p {apache,php,mysql}/files

#准备分发到minion节点的配置文件

#为什么需要准备配置文件呢,我们下载好服务包相关配置都是默认的,不适合实际生产环境,
所以先在master节点上面配置好,统一分发给monion,保持环境的一致性。

[root@linux-node1 prod]# cp /etc/httpd/conf/httpd.conf ./apache/files/
[root@linux-node1 prod]# cp /etc/php.ini ./php/files/ 
[root@linux-node1 prod]# cp /etc/my.cnf ./mysql/files/

二、apache部署

[root@linux-node1 apache]# vim apache/apache.sls
apache-install:
  pkg.installed:
    - name: httpd

apache-config:
  file.managed:
    - name: /etc/httpd/conf/httpd.conf  # 把配置好的文件放节点这个位置
    - source: salt://apache/files/httpd.conf  # 这是我已经配置好的文件
    - user: root
    - group: root
    - mode: 644

apache-service:
  service.running:
    - name: httpd
    - enable: True
[root@linux-node1 prod]# salt "linux-node1*" state.sls apache.apache saltenv=prod test=true

 

#也可以通过源码安装来部署,自由选择
[root@linux-node1 apache]# vim ym-apache.sls
jdk-install:
  pkg.installed:
    - name: java-1.8.0-openjdk

tomcat-install:
  file.managed:
    - name: /usr/local/src/apache-tomcat-8.0.46.tar.gz
    - source: salt://web/files/apache-tomcat-8.0.46.tar.gz
    - user: root
    - group: root
    - mode: 755
  cmd.run:
    - name: cd /usr/local/src && tar zxf apache-tomcat-8.0.46.tar.gz && mv apache-tomcat-8.0.46 /usr/local/ && ln -s /usr/local/apache-tomcat-8.0.46 /usr/local/tomcat
    - unless: test -L /usr/local/tomcat && test -d /usr/local/apache-tomcat-8.0.46

三、php部署

[root@linux-node1 prod]# vim php/php.sls
php-install:
  pkg.installed:
    - pkgs:  
      - php
      - php-pdo
      - php-mysql

php-config:
  file.managed:
    - name: /etc/php.ini
    - source: salt://php/files/php.ini
    - user: root
    - group: root
    - mode: 644
[root@linux-node1 prod]# salt "linux-node1*" state.sls php.php saltenv=prod  test=True

四、mysql部署

[root@linux-node1 prod]# vim mysql/mysql.sls
mysql-repo:
  file.managed:  # 先配置国内镜像yum源
    - name: /etc/yum.repos.d/MariaDB.repo
    - source: salt://mysql/files/MariaDB.repo
    - user: root
    - gourp: root
    - mode: 644

mysql-install:
  pkg.installed:
    - pkgs:
      - MariaDB-server
      - MariaDB-client

mysql-config:
  file.managed:
    - name: /etc/my.cnf
    - source: salt://mysql/files/my.cnf
    - user: root
    - gourp: root
    - mode: 644

mysql-service:
  service.running:
    - name: mariadb
    - enable: True
[root@linux-node1 prod]# salt "linux-node1*" state.sls mysql.mysql saltenv=prod  test=True


五、写入top file,执行高级状态

[root@linux-node1 base]# pwd
/srv/salt/base
[root@linux-node1 base]# cat top.sls                           
prod:
  'os:CentOS':
   - match: grain
   - apache.apache
   - php.php
   - mysql.mysql
[root@linux-node1 base]# salt 'linux-node1*' state.highstate

六、配置各节点httpd监听本机ip

#统一的配置要求我们已经配置好分发到各节点了,例如各节点监听本机ip等操作不能统一配置
需要根据每台机器实际情况部署
#我们可以利用grains组件获取节点地址,jinja模块设置变量,然后将获取到的ip地址传值到对应节点上去

#设置jinja变量

[root@linux-node1 apache]# vim /srv/salt/prod/apache/files/httpd.conf 
#Listen 12.34.56.78:80
#Listen 80
Listen {{ IPADDR }}:{{ PORT }}

#确认grains正常获取节点信息

[root@linux-node1 prod]# salt '*' grains.item fqdn_ip4
linux-node1.example.com:
    ----------
    fqdn_ip4:
        - 192.168.56.11
linux-node2.example.com:
    ----------
    fqdn_ip4:
        - 192.168.56.12

#配置sls文件调取变量值

[root@linux-node1 prod]# vim apache/apache.sls 
apache-install:
  pkg.installed:
    - name: httpd

apache-config:
  file.managed:
    - name: /etc/httpd/conf/httpd.conf
    - source: salt://apache/files/httpd.conf
    - user: root
    - group: root
    - mode: 644
    - template: jinja  # 声明jinja模板
    - defaults:  # 定义默认的参数和值
      PORT: 80  # PORT和IPADDR都为变量
      IPADDR: {{ grains['fqdn_ip4'][0] }}  # 通过grains返回数据,此处返回的是一个列表形式,增加[0]指定第一个

apache-index:
  file.managed:
    - name: /var/www/html/index.php
    - source: salt://apache/files/index.php
    - user: root
    - group: root
    - mode: 644

apache-service:
  service.running:
    - name: httpd
    - enable: True
    - reload: True  # 重新载入开启
    - watch:  # 监听ID为apache-config模块的配置文件是否变动
      - file: apache-config
[root@linux-node1 prod]# salt "linux-node*" state.highstate

#节点监听地址变为自身ip

[root@linux-node1 prod]# netstat -ntpl | grep 80             
tcp        0      0 192.168.56.11:80        0.0.0.0:*               LISTEN      10717/httpd 
[root@linux-node2 ~]# netstat -ntpl | grep 80         
tcp        0      0 192.168.56.12:80        0.0.0.0:*               LISTEN      3905/httpd

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章