SaltStack自動化メンテナンス
7100 ワード
導入の考え方:
Pythonによる新しいサーバの自動追加:
サービス側に制御側IPとログインユーザ名パスワードを追加し、サービス側は制御側サーバーにstaltstack制御側を自動的にインストールし、自動的に構成する.制御側サーバーにログインする必要がなく、ユーザー名とパスワードを提供するだけで自動的に新しい制御側サーバーを追加することができる.
第一部分:基礎取付
ロール#ロール#
IP
SlatStackサーバ
10.10.29.113
制御端(一)
10.10.56.128
制御端子(二)
10.10.29.214
Salt-master配備:
1.epelソースのインストール:
Salt-minionインストール:
1.epelソースのインストール:
1.Salt-minion操作:編集/etc/salt/minionファイル:
2.slat-minionサービスを再起動する.
接続が正常かどうかをテストする:
第二部分:簡単な構成管理
配置apacheを例にとると:1.プロファイルの場所を指定する:slsファイルのインデント要件:上位と下位の2つのスペースをインデントしてSalt-masterプロファイルを編集する、file_rootsブロック
2.プロファイルslsのminion_の編集IDが10-10-56-128のsalt-minionにhttpdとhttpd-develパッケージをインストールする:top.slsを編集する:
apache.slsを編集(⚠注意ファイル名はtop.slsで定義したものと同じで、ファイル名の接尾辞はslsです):
構成完了後実行:
1.Salt-minionのステータス情報の取得(grainsはsalt-minion起動時のみ情報収集)すべての情報取得コマンド:
zabbixを例に:1.salt-masterマスタープロファイルの変更(修正実行
2.新規編集/srv/pillar/top.slsファイル:
3.新規編集/srv/pillar/zabbix.slsファイル:
minionID関連照合
minionIDネーミング仕様:
1.*ワイルドカード*---はすべてのweb*---web文字を含むすべての制御端を表しますか?---1文字のあいまいな一致!----2.リスト方式を含まないslsプロファイル内で正規表現を使用(最初の行は宣言-mach:pcre):
5.IPアドレスによるSalt-minion:
6.複数条件マッチング:
8.バッチ実行:
セクション6:一般的なモジュールの使用
1.Networkモジュール:
1.tcp接続数を返す
編集/etc/salt/master
第7部.Salt-minionデータの返却と格納(MySQLに格納):
1.slat-masterエンド/etc/salt/masterプロファイルに次の構成を追加します.
2.MySQLを設定する:``新規salt.sql次の内容を入力し、実行する
Pythonによる新しいサーバの自動追加:
サービス側に制御側IPとログインユーザ名パスワードを追加し、サービス側は制御側サーバーにstaltstack制御側を自動的にインストールし、自動的に構成する.制御側サーバーにログインする必要がなく、ユーザー名とパスワードを提供するだけで自動的に新しい制御側サーバーを追加することができる.
第一部分:基礎取付
ロール#ロール#
IP
SlatStackサーバ
10.10.29.113
制御端(一)
10.10.56.128
制御端子(二)
10.10.29.214
Salt-master配備:
1.epelソースのインストール:
yum -y install epel-release
2.saltstackのインストール:yum -y install salt-master chkconfig salt-master on && service salt-master start
管理ユーザーの追加:useradd admin; echo password | passwd --stdin admin
ユーザーログインテスト:salt -a pam \* test.ping
3.salt-masterファイアウォールルールの追加:iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 4505 -j ACCEPT
iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 4506 -j ACCEPT
service iptables save
Salt-minionインストール:
1.epelソースのインストール:
yum -y install epel-release
2.salt-minionのインストール:yum -y install salt-minion chkconfig salt-minion on && service salt-minion start
Salt-minion接続サーバ:1.Salt-minion操作:編集/etc/salt/minionファイル:
vi /etc/salt/minion
注意:番号の後ろのスペース、さもないと再起動サービスが間違っています!master: 10.10.29.113
2.slat-minionサービスを再起動する.
service salt-minion restart
3.Salt-master操作:すべての接続制御端を表示する:salt-key -L
指定制御端証明書の接続を受け入れることを確認する:salt-key -a
すべての制御端証明書の接続を受け入れることを確認する:salt-key -A
一般的な操作接続が正常かどうかをテストする:
salt '*' test.ping
shellコマンド実行salt '*' cmd.run "uptime"
説明:*はすべてのSalt-minionを表し、単独テストでSalt-minionを指定し、対応するSalt-minion名に変更する第二部分:簡単な構成管理
配置apacheを例にとると:1.プロファイルの場所を指定する:slsファイルのインデント要件:上位と下位の2つのスペースをインデントしてSalt-masterプロファイルを編集する、file_rootsブロック
vi /etc/salt/master
file_roots:
base:
- /srv/salt
2.プロファイルslsのminion_の編集IDが10-10-56-128のsalt-minionにhttpdとhttpd-develパッケージをインストールする:top.slsを編集する:
base:
'10-10-56-128':
- apache
apache.slsを編集(⚠注意ファイル名はtop.slsで定義したものと同じで、ファイル名の接尾辞はslsです):
apache-services:#
pkg.installed:#
- names:#
- httpd
- httpd-devel
service.running:#
- name: httpd#
- enable:True#
構成完了後実行:
salt '10-10-56-128' state.highstate
第3部:Grainsデータシステム(静的データ):1.Salt-minionのステータス情報の取得(grainsはsalt-minion起動時のみ情報収集)すべての情報取得コマンド:
salt '*' grains.items
指定パラメータ情報の取得:salt '*' grain.get shell
2.Salt-minionをカスタマイズするgrains:新規/etc/salt/grainsの編集(編集完了後、salt-minionサービスの再起動が必要)service: web
salt-masterでカスタムgrainsを取得する:salt '*' grains.get service
grainsを使用してSalt-minion実行コマンドをマッチングする:salt -G service:web cmd.run 'service httpd status'
第四部分:Pillarデータシステム(動的データ):zabbixを例に:1.salt-masterマスタープロファイルの変更(修正実行
service slat-master restart
saltマスターサービスの再起動):vi /etc/salt/master
pillar_roots:
base:
- /srv/pillar
2.新規編集/srv/pillar/top.slsファイル:
base:
'10-10-56-128':
- zabbix
3.新規編集/srv/pillar/zabbix.slsファイル:
Zabbix_Server: 10.10.29.113
4.同期pillar構成のリフレッシュ:salt '*' saltutil.refresh_pillar
5.pillar構成状態の取得:salt '*' pillar.items
6.指定されたpillarでコマンドを実行:salt -I Zabbix_Server:10.10.29.113 test.ping
第5部:saltstackリモート実行--Targeting詳細minionID関連照合
minionIDネーミング仕様:
mysql-mysql001-BGP04-search.baidu.com
_____ ________ _____ ______ __________
1.*ワイルドカード*---はすべてのweb*---web文字を含むすべての制御端を表しますか?---1文字のあいまいな一致!----2.リスト方式を含まない
salt -L '10.10.56.128,10.10.29.214' test.ping
3.正規表現:salt -E '10-10-*' cmd.run 'df -h'
base:
'10-10-56-128':
- mach: pcre
- zabbix
5.IPアドレスによるSalt-minion:
salt -S 10.10.56.128 cmd.run 'df -h'
6.slsプロファイル内でgrainsを使用する(最初の行は宣言-mach:grain):base:
'10-10-56-128':
- mach: grain
- zabbix
6.複数条件マッチング:
salt -C '10-10* or I@Zabbix_Server:10.10.29.113' cmd.run 'df -h'
salt -C '10-10* and I@Zabbix_Server:10.10.29.113' cmd.run 'df -h'
7.グループ(group)、直接グループを指定したり、様々なマッチング条件を定義してグループ化できる:編集/etc/salt/masterファイルnodegroups:
group1: '[email protected],bar.domain.com,baz.domain.com and bl*.domain.com'
group2: 'G@os:Debian and foo.domain.com'
8.バッチ実行:
salt '*' -b 2 test.ping
同時操作2台Salt-minionセクション6:一般的なモジュールの使用
1.Networkモジュール:
1.tcp接続数を返す
salt '*' network.active_tcp
2.serviceサービス管理モジュールsalt '*' service.get_all
すべてのサービスを表示するsalt '*' service.status sshd
指定サービス状態をチェックするsalt '*' service.restart sshd
指定サービス状態を再開するsalt '*' service.stop sshd
指定サービス状態を停止するsalt '*' service.start sshd
指定サービス状態を起動する3.stateモジュール:salt '*' state.show_top
top.slsファイルの構成実行結果4.ACLモジュール:編集/etc/salt/master
# ( )
client_acl:
larry:
- test.ping
- network.*
# ( )
client_acl_blacklist:
users:
- root
- '^(?!sudo_).*$' # all non sudo users
modules:
- cmd.run
第7部.Salt-minionデータの返却と格納(MySQLに格納):
1.slat-masterエンド/etc/salt/masterプロファイルに次の構成を追加します.
mysql.host: 'salt'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306
2.MySQLを設定する:``新規salt.sql次の内容を入力し、実行する
mysql -uroot -p < salt.sql
MySQLデータベースに注ぐ--
CREATE DATABASE `salt`
DEFAULT CHARACTER SET utf8
DEFAULT COLLATE utf8_general_ci;
USE `salt`;
--
-- Table structure for table `jids`
--
DROP TABLE IF EXISTS `jids`;
CREATE TABLE `jids` (
`jid` varchar(255) NOT NULL,
`load` mediumtext NOT NULL,
UNIQUE KEY `jid` (`jid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Table structure for table `salt_returns`
--
DROP TABLE IF EXISTS `salt_returns`;
CREATE TABLE `salt_returns` (
`fun` varchar(50) NOT NULL,
`jid` varchar(255) NOT NULL,
`return` mediumtext NOT NULL,
`id` varchar(255) NOT NULL,
`success` varchar(10) NOT NULL,
`full_ret` mediumtext NOT NULL,
`alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
KEY `id` (`id`),
KEY `jid` (`jid`),
KEY `fun` (`fun`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
--
-- Table structure for table `salt_events`
--
DROP TABLE IF EXISTS `salt_events`;
CREATE TABLE `salt_events` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`tag` varchar(255) NOT NULL,
`data` varchar(1024) NOT NULL,
`alter_time` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `tag` (`tag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;