SaltStack的salt-ssh使用及LAMP狀態設計部署
阿新 • • 發佈:2018-01-19
執行 全局 roo 結果 tab passwd install tor states SaltStack的salt-ssh使用及LAMP狀態設計部署
1、salt-ssh的使用
官方文檔:https://docs.saltstack.com/en/2016.11/topics/ssh/index.html
(1)安裝salt-ssh [root@linux-node1 ~]# yum install -y salt-ssh (2)配置salt-ssh [root@linux-node1 ~]# vim /etc/salt/roster linux-node1: host: 192.168.56.11 user: root passwd: 123123 linux-node2: host: 192.168.56.12 user: root passwd: 123123 (3)使用ssh遠程執行 [root@linux-node1 ~]# salt-ssh ‘*‘ -r ‘uptime‘ linux-node2: ---------- retcode: 0 stderr: stdout: [email protected]‘s password: 14:07:19 up 14 days, 8:41, 2 users, load average: 0.04, 0.08, 0.07 linux-node1: ---------- retcode: 0 stderr: stdout: [email protected]‘s password: 14:07:20 up 23 days, 8:13, 2 users, load average: 2.86, 0.81, 0.34
2、配置管理
(1)什麽是狀態?
所謂的狀態就是希望系統運行某些命令之後的結果。描述狀態使用YAML格式的文件。SLS:salt state
舉例安裝apache,如下:
[root@linux-node1 ~]# vim /srv/salt/base/web/apache.sls apache: pkg.installed: - name: httpd service.running: - name: httpd file.managed: - name: /etc/httpd/conf/httpd.conf - source: salt://apache/files/httpd.conf - user: root - group: root - mode: 644 解釋說明: apache:id聲明,在所有環境(base、prod)下全局唯一 pkg:狀態模塊 .:引用關系 installed:模塊中的方法 ::代表層級關系 name:可以理解為參數,後面跟的是參數值 file.managed:文件管理模塊,必須要有source指定文件的來源路徑 source:文件的來源路徑,salt://代表著環境的根路徑,這的根路徑為:/srv/salt/base/ user、group、mode:分別指定文件的所屬者,所屬組和權限 以上的文件還可以使用分id的寫法: apache-install: pkg.installed: - name: httpd apache-service: service.running: - name: httpd apache-config: file.managed: - name: /etc/httpd/conf/httpd.conf - source: salt://apache/files/httpd.conf - user: root - group: root - mode: 644 存在指定多個配置文件,還可以使用一下寫法:(不適用name作為參數傳遞時,id就是name) /etc/httpd/conf/httpd.conf: file.managed: - source: salt://apache/files/httpd.conf - user: root - group: root - mode: 644 /etc/httpd/conf/php.conf: file.managed: - source: salt://apache/files/php.conf - user: root - group: root - mode: 644
(2) LAMP的狀態設計與實現部署
1、設計分析
名稱 | 軟件包 | 配置文件 | 服務 |
---|---|---|---|
使用模塊 | pkg | file | service |
LAMP | httpd、php、mariadb、mariadb-server、php-mysql、php-pdo、php-cli | /etc/httpd/conf/httpd.conf、/etc/php.ini | httpd、mysqld |
2、Aapche的狀態配置
[root@linux-node1 prod]# pwd /srv/salt/prod [root@linux-node1 prod]# mkdir apache php mysql [root@linux-node1 prod]# tree . ├── apache ├── mysql └── php 3 directories, 0 files [root@linux-node1 prod]# cd apache/ [root@linux-node1 apache]# vim apache.sls #編寫apache的狀態模塊 apache-install: pkg.installed: - name: httpd apache-config: file.managed: - name: /etc/httpd/conf/httpd.conf - source: salt://apache/files/httpd.conf #salt://代表著環境的根路徑 - user: root - group: root - mode: 644 apache-service: service.running: - name: httpd - enable: True [root@linux-node1 apache]# mkdir files #創建source目錄 [root@linux-node1 apache]# cd files/ [root@linux-node1 files]# cp /etc/httpd/conf/httpd.conf . [root@linux-node1 apache]# tree . ├── apache.sls └── files └── httpd.conf 1 directory, 2 files [root@linux-node1 apache]# salt ‘linux-node1‘ state.sls apache.apache saltenv=prod
3、php的狀態配置
[root@linux-node1 prod]# cd php
[root@linux-node1 php]# mkdir files
[root@linux-node1 php]# vim init.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 php]# cp /etc/php.ini files/
[root@linux-node1 php]# tree
.
├── files
│ └── php.ini
└── init.sls
1 directory, 2 files
4、mysql的狀態配置
[root@linux-node1 prod]# cd mysql/
[root@linux-node1 mysql]# vim init.sls
mysql-install:
pkg.installed:
- pkgs:
- mariadb
- mariadb-server
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-server
- enable: True
[root@linux-node1 mysql]# mkdir files
[root@linux-node1 mysql]# cp /etc/my.cnf files/
[root@linux-node1 prod]# tree
.
├── apache
│ ├── files
│ │ └── httpd.conf
│ └── init.sls
├── mysql
│ ├── files
│ │ └── my.cnf
│ └── init.sls
└── php
├── files
│ └── php.ini
└── init.sls
[root@linux-node1 prod]# salt -S ‘192.168.56.11‘ state.sls php.init saltenv=prod
linux-node1.example.com:
----------
ID: php-install
Function: pkg.installed
Result: True
Comment: The following packages were installed/updated: php-mysql
The following packages were already installed: php-pdo, php
Started: 10:30:14.780998
Duration: 118711.436 ms
Changes:
----------
php-mysql:
----------
new:
5.4.16-43.el7_4
old:
----------
ID: php-config
Function: file.managed
Name: /etc/php.ini
Result: True
Comment: File /etc/php.ini is in the correct state
Started: 10:32:13.556562
Duration: 51.913 ms
Changes:
Summary for linux-node1.example.com
------------
Succeeded: 2 (changed=1)
Failed: 0
------------
Total states run: 2
Total run time: 118.763 s
5、寫入top file,執行高級狀態
[root@linux-node1 base]# pwd
/srv/salt/base
[root@linux-node1 base]# vim top.sls
prod:
‘linux-node1.example.com‘:
- apache.init
- php.init
- mysql.init
[root@linux-node1 base]# salt ‘linux-node1*‘ state.highstate
linux-node1.example.com:
----------
ID: apache-install
Function: pkg.installed
Name: httpd
Result: True
Comment: All specified packages are already installed
Started: 10:39:04.214911
Duration: 762.144 ms
Changes:
----------
ID: apache-config
Function: file.managed
Name: /etc/httpd/conf/httpd.conf
Result: True
Comment: File /etc/httpd/conf/httpd.conf is in the correct state
Started: 10:39:04.979376
Duration: 13.105 ms
Changes:
----------
ID: apache-service
Function: service.running
Name: httpd
Result: True
Comment: The service httpd is already running
Started: 10:39:04.992962
Duration: 36.109 ms
Changes:
----------
ID: php-install
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 10:39:05.029241
Duration: 0.65 ms
Changes:
----------
ID: php-config
Function: file.managed
Name: /etc/php.ini
Result: True
Comment: File /etc/php.ini is in the correct state
Started: 10:39:05.029987
Duration: 10.642 ms
Changes:
----------
ID: mysql-install
Function: pkg.installed
Result: True
Comment: All specified packages are already installed
Started: 10:39:05.040793
Duration: 0.422 ms
Changes:
----------
ID: mysql-config
Function: file.managed
Name: /etc/my.cnf
Result: True
Comment: File /etc/my.cnf is in the correct state
Started: 10:39:05.041301
Duration: 7.869 ms
Changes:
----------
ID: mysql-service
Function: service.running
Name: mariadb
Result: True
Comment: The service mariadb is already running
Started: 10:39:05.049284
Duration: 28.054 ms
Changes:
Summary for linux-node1.example.com
------------
Succeeded: 8
Failed: 0
------------
Total states run: 8
Total run time: 858.995 ms
SaltStack的salt-ssh使用及LAMP狀態設計部署