この質問の非常によく似たバージョンが尋ねられます ここ 、しかしその人が間違ったディレクトリに彼らのトップファイルを持っていたのでそれは完全に異なります。
3つのプロジェクトがあり、project1、project2、project3と呼びます。私の目標は、srv/saltディレクトリが次のようになるマスター/ミニオンセットアップを作成することでした。
/srv/salt
|top.sls
|/project1
|__/postgresql
|__init.sls
|__config.sql
|__/iptables
|__init.sls
|__config.sh
|/project2
|__/Tomcat
|__init.sls
|__config.sh
|__/Java
|__init.sls
|__config.sh
|/project3
|__/serverconfig
|__init.sls
|__config.sql
|__/conky
|__init.sls
|__config.sh
これを達成するために、私は/ etc/salt/masterを編集して読みました
#/etc/salt/master
file_roots:
base:
- /srv/salt
project1:
- /srv/salt/project1
project2:
- /srv/salt/project2
project3:
- /srv/salt/project3
また、各プロジェクトに関与する静的サーバーがあるため、ノードをセットアップしたいと思いました。これは、ノードを整理するための非常に直感的な方法です。
/ etc/salt/masterを編集してノードグループを表示することから始めました
#/etc/salt/master
nodegroups:
project1: 'L@project1_server1,project1_server2,project1_server3'
project2: 'L@project2_server1,project2_server2,project2_server3'
project3: 'L@project3_server1,project3_server2,project3_server3'
これを設定して実行するときに、次のコマンドを使用して、project1の状態をサーバーに適用してみました。
salt -N project1 state.highstate
これは、project1_server2、project1_server3では正しく完了しますが、project1_server1では失敗します。
Project1_server1のエラーは、「トップファイルまたは外部ノードのデータが見つかりません」です。
このセットアップをより簡単に実装する方法についての提案を受け付けていますが、これが機能しない理由を知りたいと思います。助けてくれてありがとう。
EDIT1
top.slsファイルを追加する
#/srv/salt/top.sls
project1:
project1:
- match: nodegroup
- postgresql
- iptables
project2:
project2:
- match: nodegroup
- Tomcat
- Java
project3:
project3:
- match: nodegroup
- serverconfig
- conky
EDIT2
Salt -N project1grains.itemidからの出力
project1_server1:
----------
id:
project1_server1
project1_server2:
----------
id:
project1_server2:
project1_server3:
----------
id:
project1_server3:
EDIT3
正解はChrisVによって提供されました
/ etc/salt/masterのノードの構文エラーが問題でした。それを変更してから、salt-masterを再起動する必要がありました
pkill salt-master
salt-master -d