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

 

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