CentOS 7
Sponsored Link

Salt : Salt State File を利用する#2
2016/10/08
 
Top File と呼ばれる top.sls ファイルを起点に、ツリー状に State ファイルを配置する State Tree の構成例です。
[1] 定義したルートディレクトリ直下に top.sls を配置し、そこからツリー状にファイルを配置して設定します。
[root@dlp ~]#
vi /srv/salt/top.sls
base:
  # ターゲットノードを定義
  '*':
    # State ファイルの名称を定義 (SLSファイルの拡張子を除いた部分)
    # State ファイルは複数行を指定して設定可能
    - default

# Top で定義した default.sls 作成

[root@dlp ~]#
vi /srv/salt/default.sls
# 例として httpd/PHP/MariaDB をインストールして起動する State

webserver:
  pkg.installed:
    - pkgs:
      - httpd
      - php
      - php-mbstring
      - php-pear
      - mariadb-server

/var/www/html/index.php:
  file:
    - managed
    - source: salt://httpd/index.php
    - require:
      - pkg: webserver

# パスワード設定等の初期設定スクリプト
/tmp/setup.sql:
  file:
    - managed
    - source: salt://httpd/setup.sql

enable_httpd:
  service.running:
    - name: httpd
    - enable: True
    - require:
      - pkg: webserver

enable_mariadb:
  service.running:
    - name: mariadb
    - enable: True
    - require:
      - pkg: webserver

setup_mariadb:
  cmd.run:
    - name: '/bin/mysql -u root < /tmp/setup.sql'
    - require:
      - service: enable_mariadb

# Firewalld 稼働中の場合はサービス許可設定
{% set fw_status = salt['service.status']('firewalld') %}
{% if fw_status %}
setup_fw:
  cmd.run:
    - names:
      - '/bin/firewall-cmd --add-service={http,https,mysql}'
      - '/bin/firewall-cmd --add-service={http,https,mysql} --permanent'
{% endif %}

# index.php テンプレート作成

[root@dlp ~]#
vi /srv/salt/httpd/index.php
<?php
   print "Salt State Test Page";
?>

# MariaDB 初期設定スクリプト作成

[root@dlp ~]#
vi /srv/salt/httpd/setup.sql
set password for root@localhost=password('password');
set password for root@'127.0.0.1'=password('password'); 
delete from mysql.user where user='';
delete from mysql.user where password='';
drop database test;

# state.apply で適用

[root@dlp ~]#
salt "*" state.apply

node01.srv.world:
    ----------
    cmd_|-setup_fw_|-/bin/firewall-cmd --add-service={http,https,mysql} --permanent_|-run:
        ----------
        __run_num__:
            7
        changes:

.....
.....

 name:
            mariadb
        result:
            True
        start_time:
            19:56:52.911517

# 確認

[root@dlp ~]#
salt "node01.srv.world" cmd.run 'systemctl status httpd'

[root@dlp ~]# salt "node02.srv.world" cmd.run 'systemctl status httpd'
node01.srv.world:
    * httpd.service - The Apache HTTP Server
       Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled)
       Active: active (running) since Mon 2016-10-17 10:56:52 JST; 2min 16s ago
.....
.....
[root@dlp ~]#
salt "node01.srv.world" cmd.run 'systemctl status httpd'

[root@dlp ~]# salt "node02.srv.world" cmd.run 'systemctl status httpd'
node01.srv.world:
    * mariadb.service - MariaDB database server
       Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
       Active: active (running) since Mon 2016-10-17 10:56:57 JST; 2min 24s ago
.....
.....
[root@dlp ~]#
salt "node01.srv.world" cmd.run 'mysql -u root -ppassword -e "show databases;"'

[root@dlp ~]# salt "node02.srv.world" cmd.run 'systemctl status httpd'
node01.srv.world:
    Database
    information_schema
    mysql
    performance_schema
[root@dlp ~]#
curl http://node01.srv.world/index.php

Salt State Test Page
 
Tweet