3

私は、SaltStack を学習するための小規模な調査 AWS インフラストラクチャを作成しました。すでに 3 つの ec2 インスタンスが実行されています。(マスターとミニオン2体)。1 人のミニオンは iam-role なしで、もう 1 人のミニオンは、ec2 および s3 アクションにアクセスできるロールを持っています。(純粋にテスト目的でロールを設定します。)

私が発見しようとしているのは、salt-master (または salt-minion ?) を構成して aws services にアクセスできるようにする方法です。今のところ、SSH で 2 番目のミニオンにアクセスでき、boto3 を使用して ec2 と ss3 にアクセスできます。しかし、salt-master => salt-minion から boto_ec2 実行モジュールを使用すると、アクセスエラーが発生します。使用する必要がある/etc/salt/cloud.providersおよび/etc/salt/cloud.profiles構成があることは知っています。私が見たほとんどの例は、ソルトミニオンがソルトによって作成されることを期待していたので、既存のインスタンスでそれを行う方法に少し混乱しています。

質問は次のとおりです。「salt-master から boto_ec2 モジュール (またはその他) を使用してミニオンをオーケストレーションできるように、マスターとミニオンを構成する正しい正しい方法は何ですか。AWS 資格情報 (キー) はどこでどのように設定する必要がありますか?どの構成ファイルを変更/追加する必要があり、どのコマンドを実行する必要がありますか? インスタンスは既に稼働しています。"

このリンクを見つけました: https://salt-cloud.readthedocs.org/en/latest/topics/aws.htmlしかし、次のような場所があります:

"The following settings are always required for EC2:"

# Set the EC2 login data
my-ec2-config:
  id: HJGRYCILJLKJYG
  key: 'kdjgfsgm;woormgl/aserigjksjdhasdfgn'
  keyname: test
  securitygroup: quick-start
  private_key: /root/test.pem
  provider: ec2

しかし、この構成がどこにあるべきかは言われていません。マスター/ミニオン?どのファイル?そして、コマンドを実行すると:

# salt '*142*' boto_ec2.exists Master
: 'boto_ec2' __virtual__ returned False
ERROR: Minions returned with non-zero exit code

動いていない。

4

1 に答える 1

2

クラウドのサポートは、saltstack 内で緊密に統合されていないことに注意してください。

既存のインスタンスでそれを行う方法。 3 つの EC2 インスタンスがあるとします。S1 (ソルト マスター)、M1 & M2 は、ソルト ミニオンを配置する場所です。

方法 1 : ソルト マスター内にソルト クラウドをインストールし、saltify メソッドを使用します。

# filename : /etc/cloud.providers.d/sality-driver.conf
aws-saltify:
  minion:
    master: <ip_address_of_your_salt_master> 
  driver: saltify    

# filename : /etc/cloud.profiles.d/salt-minion.conf
minion1: 
  ssh_host: <M1-ip>
  ssh_username: <your_aws_instance_user_name>
  key_filename: "<full private_key_file path use to connect to minion>"
  provider: aws-saltify

minion2: 
  ssh_host: <M2-ip>
  ssh_username: <your_aws_instance_user_name>
  key_filename: "<full private_key_file path use to connect to minion2>"
  provider: aws-saltify

# run the command to saltify those host

sudo salt-cloud saltify -p minion1 <minion1-host-name>
sudo salt-cloud saltify -p minion2 <minion2-host-name>

それが機能する場合は指交差。

**方法 2 : salt-ssh を使用 **

重要な注意: salt.state.boto_ec2 は 2015.8.8 (2016 年 3 月) では完全ではありません。したがって、boto_ec2 を使用してこれらのマシンに salt-minion をデプロイすることはできません。おそらく、boto_lc を試すか、新しい機能を待つことができます。

#Create a folder just for salt-ssh deployment
mkdir ~/saltme

# master file for salt-ssh  ~/saltme/master 
file_roots:
  base:
  # Replace the "~" with you $HOME full path.  
    - ~/saltme/master

#create a roster file ~/saltme/minion-roster
my-bare-M1: 
  host: <to-be-minion-1-host-ip-address>
  user: <ami-default >
  sudo: True

my-bare-M2: 
  host: <to-be-minion-2-host-ip-address>
  user: <ami-default >
  sudo: True

# create your top file   ~/saltme/top.sls
base:
  '*':
    - saltify-minion

# create the state file ~/saltme/saltify-minion.sls
salt-minion:
  pkg.installed


# Now , inside the ~/saltme , run this against each to-be-minion-ec2
salt-ssh --roster-file roster --config-dir $HOME/saltme  -i --priv saltminion-1.pem  'my-bare-M1'  state.highsatte

salt-ssh --roster-file roster --config-dir $HOME/saltme  -i --priv saltminion-1.pem  'my-bare-M2'  state.highsatte
#Now accept the salt-minion key 
sudo salt-key -A 
于 2016-04-15T15:24:34.400 に答える