saltstackノート
11482 ワード
一、saltstackって何?
saltstackは、オープンソース異機種プラットフォームの基礎設定管理ツールです.
二、saltstackは何ができますか.
何百台ものサーバを管理する管理者であれば、次のようなシーンに遭遇しますか?1.各サーバにagentを配備する必要があります.数百台のサーバが1つずつ配備されますか?2.agent構成は変更する必要がありますが、1つの構成も必要ですか?3.0 day脆弱性が爆発し、サーバーバージョンをチェックし、対応パッチをインストールする必要があります.どうすればいいですか?は管理システムを構成し、事前定義された状態のリモートノードを維持することができる(例えば、指定されたパケットがインストールされ、指定されたサービスが実行されていることを確保する). リモート実行システムは、リモートノード(単一のノードであってもよいし、任意のルールで選択されたノードであってもよい)上でコマンドおよびクエリーデータを実行するために使用される.
なぜsaltを使うのですか?は簡単で、プロジェクトの大きさを考慮せずに設定とメンテナンスが非常に容易です.構成をほとんど変えずに作業できます. は並列に実行され、コマンドがリモートシステムに送信されるのはシリアルではなく並列であり、安全な暗号化プロトコルを使用し、最小で最も速いネットワーク荷重を使用して、簡単なプログラミングインターフェースを提供する. は柔軟で拡張しやすく、python開発を使用して、簡単なPython APIから呼び出すことができ、またはコマンドラインから呼び出され、使い捨てコマンドを実行するために使用することができ、より大きなアプリケーションの構成部分として使用することができます.
三、saltstack運行方式?
saltstackの3つの運転方式 Local Master/Minion Salt SSH
最も伝統的な運行方式はやはりC/Sモードで、管理側はMasterをインストールして、管理ノードの上でMinionクライアントをインストールされます.主にMaster/Minionの運転方法について説明します.
四、saltstack基本インストールと構成
ここではrepoソースを採用し、オンラインでインストールします.公式ドキュメントを参照して、管理側と被管理ノードにyumコマンドを使用してインストールしてください.
インストールが完了したら、まずmasterを起動します
minionノードを開き、プロファイルを編集
minionの起動
マスターに切り替え
これで、簡単なsaltstack環境が構築されました.
いくつかの注意点と説明:a)masterは2つのポートとminion通信を使用して、この2つのポートが正常に通信していることを確認します. 4505 publish_portメッセージ配信システムポート 4506 ret_portクライアントとサービス側の通信ポート ファイアウォールを閉じるか、INPUTチェーンテーブルにポートを追加できます.
もちろん、プロファイルでポートをカスタマイズすることもできます.
b)minionとmaster認証プロセス1.minionは、初回起動時に、/etc/salt/pki/minion/の下で公開鍵と秘密鍵minion.pub(public key)とminion.pem(private key)を自動的に生成し、master 2.masterに公開鍵(minion.pub)を送信する.minionの公開鍵を受信した後、salt-keyコマンドでminionを受け入れ、minion公開鍵を/etc/salt/salt/salt/master/minionsの下に置く.minion idで名前を付けます.このとき、マスターはminionにコマンドを送信できます.自動的に受け入れるように構成することもできます
五、saltstack簡単応用
saltコマンドフォーマット
引用符のアクションターゲットは、正規およびワイルドカードを使用してフィルタ、フィルタできます. salt'shell正則'コマンド//ワイルドカード を使用 salt-E'prel正規'コマンド//正規表現 を使用 salt-N$groupコマンド//パケット名を使用してプロファイルでパケット を作成できます. salt -L 'server_id1,server_id2,server_id 3'コマンド//複数のターゲットid を指定 salt-G'osrelease:6.9'コマンド//osバージョン6.9 を指定
例:test.ping、cmd.run
どのようなモジュールが利用できるかどうやって知っていますか?どのようにモジュールがどのような方法で使用できるか、どのように使用できるかを知っていますか?
パッケージのインストール
pkg関数は、ローカルシステムパッケージマネージャを自動的に同じsalt関数にマッピングします.これはpkg.installがRed Hatベースのシステムでyumを使用し、Debianシステムではaptを使用してパッケージをインストールすることを意味する.
grainsモジュールは、grainsがminion(クライアント)の起動時に収集されたオペレーティングシステムタイプ、NIC ipなどの情報を説明します.
これらの情報があれば、リモートでコマンドを実行するときに便利です.grainsのいくつかの指標に従って操作することができます.前述したようにsalt-G'osrelease:6.9'コマンドです.
pillarモジュールはpillarがgrainsとは異なり、master上で定義され、minion定義のいくつかの情報であることを示しています.重要なデータ(パスワード)のようにpillarに存在したり、変数を定義したりすることができます.
その他のその他#リモート転送ファイル、ローカルファイルcopyをノードにroot@localhost:~#salt-cp'./abc.txt/opt/{'ftp 138':{'/opt/abc.txt':True},'web 137':{'/opt/abc.txt':True}}ディスク使用[root@salt-master/]#salt'disk.usage#ネットワークインタフェース[root@salt-master/]#salt''network.interfaces#ファイル圧縮root@localhost:~#salt'archive.gzip/opt/abc.txt#ファイル解凍root@localhost:~#salt'archive.gunzip/opt/abc.txt.gz#クライアントsalt'cp.get_にファイルをコピーfile salt://apache.txt/tmp/cp.txt#クライアントsalt'cp.get_にディレクトリをコピーdir salt://test/tmp#生存クライアントsalt-run manage.up#実行サービス側スクリプトsalt'cmd.scriptを表示salt://test/shell.sh
六、saltstack高級応用
1、構成管理インストールapache
2、目次操作
3、リモート実行スクリプト
4、管理crontab#cron-test:cron.present:#cron.present:cron.absentを削除に変更-name:/bin/touch/tmp/11.1 txt-user:root-minute:'#注意アスタリスクは単引用符-hour:20-daymonth:1-10-month:'3,5'-dayweek:''
七、saltstack開発
八、総括と参考プロファイルは、キー値ペアの形式であり、スペースに特に注意する必要があります. 以上はlinux環境で導入されており、saltstackはマルチ環境をサポートできますが、masterはwindows環境でのインストールをサポートしていないことに注意してください. ノートの一部には触れていません windows構成、クラウド構成 webインタフェース アーキテクチャには、エージェント層に類似したsyndic もある.
参考サイト saltstack公式ドキュメント 中国SaltStackユーザーグループ saltstack全面紹介 運営メンテナンスネットワーク_Saltstackインストール構成の詳細
saltstackは、オープンソース異機種プラットフォームの基礎設定管理ツールです.
二、saltstackは何ができますか.
何百台ものサーバを管理する管理者であれば、次のようなシーンに遭遇しますか?1.各サーバにagentを配備する必要があります.数百台のサーバが1つずつ配備されますか?2.agent構成は変更する必要がありますが、1つの構成も必要ですか?3.0 day脆弱性が爆発し、サーバーバージョンをチェックし、対応パッチをインストールする必要があります.どうすればいいですか?
なぜsaltを使うのですか?
三、saltstack運行方式?
saltstackの3つの運転方式
最も伝統的な運行方式はやはりC/Sモードで、管理側はMasterをインストールして、管理ノードの上でMinionクライアントをインストールされます.主にMaster/Minionの運転方法について説明します.
四、saltstack基本インストールと構成
ここではrepoソースを採用し、オンラインでインストールします.公式ドキュメントを参照して、管理側と被管理ノードにyumコマンドを使用してインストールしてください.
yum install salt-master
yum install salt-minion
インストールが完了したら、まずmasterを起動します
service salt-master start
#
/etc/init.d/salt-master start
minionノードを開き、プロファイルを編集
vim /etc/salt/minion
# , !
master: 192.168.252.136 #master ip, dns 。
id: web137 # , 。
minionの起動
service salt-minion start
マスターに切り替え
# minion
salt-key -L
#
[root@localhost ~]# salt-key # -L 。
Accepted Keys:
Denied Keys:
Unaccepted Keys:
web137
Rejected Keys:
# minion
salt-key -a web137 -y # -a id
salt-key -A # -A , , -d ,-D 。
#
[root@localhost ~]# salt-key -L
Accepted Keys:
web137
Denied Keys:
Unaccepted Keys:
Rejected Keys:
これで、簡単なsaltstack環境が構築されました.
いくつかの注意点と説明:a)masterは2つのポートとminion通信を使用して、この2つのポートが正常に通信していることを確認します.
#iptables , REJECT ALL 。
iptables -I INPUT 5 -p tcp --dport 4505 -j ACCEPT -m comment --comment "salt_publish_port"
iptables -I INPUT 5 -p tcp --dport 4506 -j ACCEPT -m comment --comment "salt_ret_port"
もちろん、プロファイルでポートをカスタマイズすることもできます.
#master
vim /etc/salt/master
# , !
publish_port: 1505
ret_port: 1506
# , ,minion master 。
#minion
vim /etc/salt/minion
#
master_port: 1506 # master
b)minionとmaster認証プロセス1.minionは、初回起動時に、/etc/salt/pki/minion/の下で公開鍵と秘密鍵minion.pub(public key)とminion.pem(private key)を自動的に生成し、master 2.masterに公開鍵(minion.pub)を送信する.minionの公開鍵を受信した後、salt-keyコマンドでminionを受け入れ、minion公開鍵を/etc/salt/salt/salt/master/minionsの下に置く.minion idで名前を付けます.このとき、マスターはminionにコマンドを送信できます.自動的に受け入れるように構成することもできます
#master
vim /etc/salt/master
#
auto_accept: True #
五、saltstack簡単応用
saltコマンドフォーマット
salt '' [ ]
引用符のアクションターゲットは、正規およびワイルドカードを使用してフィルタ、フィルタできます.
# master
vim /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'
例:test.ping、cmd.run
#
salt '*' test.ping
#test.ping
[root@localhost ~]# salt '*' test.ping
web137:
True
mysql138:
True
#
salt '*' cmd.run 'df -Th'
#cmd.run
[root@localhost ~]# salt '*' cmd.run 'df -Th'
mysql138:
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
ext4 18G 968M 16G 6% /
tmpfs tmpfs 491M 12K 491M 1% /dev/shm
/dev/sda1 ext4 477M 52M 400M 12% /boot
web137:
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root
ext4 18G 968M 16G 6% /
tmpfs tmpfs 491M 12K 491M 1% /dev/shm
/dev/sda1 ext4 477M 52M 400M 12% /boot
どのようなモジュールが利用できるかどうやって知っていますか?どのようにモジュールがどのような方法で使用できるか、どのように使用できるかを知っていますか?
#
salt 'web137' sys.list_modules
#
[root@localhost ~]# salt 'web137' sys.list_modules
web137:
- acl
- aliases
- alternatives
- archive
- artifactory
#
salt 'web137' sys.doc test
#
[root@localhost ~]# salt 'web137' sys.doc test
'test.arg:'
Print out the data passed into the function ``*args`` and ```kwargs``, this
is used to both test the publication data and cli argument passing, but
also to display the information available within the publication data.
Returns {"args": args, "kwargs": kwargs}.
CLI Example:
salt '*' test.arg 1 "two" 3.1 txt="hello" wow='{a: 1, b: "hello"}'
'test.arg_repr:'
Print out the data passed into the function ``*args`` and ```kwargs``, this
is used to both test the publication data and cli argument passing, but
also to display the information available within the publication data.
Returns {"args": repr(args), "kwargs": repr(kwargs)}.
CLI Example:
salt '*' test.arg_repr 1 "two" 3.1 txt="hello" wow='{a: 1, b: "hello"}'
パッケージのインストール
#pkg.install
salt 'web137' pkg.install tree
#
[root@localhost ~]# salt 'web137' pkg.install tree
web137:
----------
tree:
----------
new:
1.5.3-3.el6
old:
pkg関数は、ローカルシステムパッケージマネージャを自動的に同じsalt関数にマッピングします.これはpkg.installがRed Hatベースのシステムでyumを使用し、Debianシステムではaptを使用してパッケージをインストールすることを意味する.
grainsモジュールは、grainsがminion(クライアント)の起動時に収集されたオペレーティングシステムタイプ、NIC ipなどの情報を説明します.
# grains
[root@localhost ~]# salt 'web137' grains.ls
web137:
- SSDs
- cpu_flags
- cpu_model
- cpuarch
- domain
- fqdn
- fqdn_ip4
- fqdn_ip6
- gpus
# grains
[root@localhost ~]# salt 'web137' grains.items
web137:
----------
SSDs:
cpu_flags:
- fpu
- vme
- de
- pse
- tsc
# minion
# minion , !
vim /etc/salt/minion
grains:
roles:
- webserver
- memcache
deployment: datacenter4
cabinet: 13
cab_u: 14-15
これらの情報があれば、リモートでコマンドを実行するときに便利です.grainsのいくつかの指標に従って操作することができます.前述したようにsalt-G'osrelease:6.9'コマンドです.
pillarモジュールはpillarがgrainsとは異なり、master上で定義され、minion定義のいくつかの情報であることを示しています.重要なデータ(パスワード)のようにpillarに存在したり、変数を定義したりすることができます.
#
vim /etc/salt/master
#
pillar_roots:
base:
- /srv/pillar
# pillar ,
mkdir -p /srv/pillar
# , master
service salt-master restart
# top.sls
vim /srv/pillar/top.sls
#
base:
'web137': # minion
- web137_info
# web137_info.sls
vim /srv/pillar/web137_info.sls
# , !
conf: /etc/web137.conf
myname: webserver
# pillar
salt '*' saltutil.refresh_pillar
#
salt 'web137' pillar.items
#
[root@localhost pillar]# salt 'web137' pillar.items
web137:
----------
conf:
/etc/web137.conf
myname:
webserver
#
salt 'web137' pillar.item conf
#
[root@localhost pillar]# salt 'web137' pillar.item conf
web137:
----------
conf:
/etc/web137.conf
# -I
salt -I 'myname:webserver' test.ping
#
[root@localhost pillar]# salt -I 'myname:webserver' test.ping
web137:
True
その他のその他#リモート転送ファイル、ローカルファイルcopyをノードにroot@localhost:~#salt-cp'./abc.txt/opt/{'ftp 138':{'/opt/abc.txt':True},'web 137':{'/opt/abc.txt':True}}ディスク使用[root@salt-master/]#salt'disk.usage#ネットワークインタフェース[root@salt-master/]#salt''network.interfaces#ファイル圧縮root@localhost:~#salt'archive.gzip/opt/abc.txt#ファイル解凍root@localhost:~#salt'archive.gunzip/opt/abc.txt.gz#クライアントsalt'cp.get_にファイルをコピーfile salt://apache.txt/tmp/cp.txt#クライアントsalt'cp.get_にディレクトリをコピーdir salt://test/tmp#生存クライアントsalt-run manage.up#実行サービス側スクリプトsalt'cmd.scriptを表示salt://test/shell.sh
六、saltstack高級応用
1、構成管理インストールapache
#
vim /etc/salt/master
#
file_roots:
base:
- /srv/salt
# : base、dev( )、test( )、prod( )。
# salt
mkdir -p /srv/salt
# top.sls
vim /srv/salt/top.sls
#
base:
'web137':
- apache
# apache.sls
vim /srv/salt/apache.sls
# , !
apache-service: # id
pkg.installed: #
- names: # - name:httpd
- httpd #
- httpd-devel
file.managed:
- name: /etc/httpd/conf/httpd.conf #
- source: salt://httpd.conf # , /srv/salt/
- user: root #
- group: root #
- mode: 644 #
service.running: #
- name: httpd #
- enable: True #
#
salt 'web137' state.highstate
#
salt 'web137' state.sls apache # .sls
2、目次操作
# top.sls
vim /srv/salt/top.sls
base:
'mysql138' :
- diroper
# diroper
vim /srv/salt/diroper.sls
diroper:
file.recurse:
- name: /tmp/diroper
- source: salt://diroper
- user: root
- file_mode: 644
- dir_mode: 755
- mkdir: True
- clean: True #
#
salt 'mysql138' state.highstate
3、リモート実行スクリプト
#
cmdexe:
- onlyif: test -f /tmp/123.txt
- names:
- touch /tmp/cmdtest.txt
- mkdir /tmp/cmdtest
- user: root
#
shell-test:
cmd.script:
- source: salt://test/1.sh
- user: root
4、管理crontab#cron-test:cron.present:#cron.present:cron.absentを削除に変更-name:/bin/touch/tmp/11.1 txt-user:root-minute:'#注意アスタリスクは単引用符-hour:20-daymonth:1-10-month:'3,5'-dayweek:''
七、saltstack開発
import salt.client
client = salt.client.LocalClient()
ret = client.cmd('*','test.ping')
print ret
八、総括と参考
参考サイト