これは、Chef Fast Startチュートリアルで推奨される方法です。
knife ssh name:mynode -a ipaddress -x ubuntu -i mycredentials.pem "sudo chef-client"
これは本当に不器用です。本当に良い方法はありませんか、または実際の実稼働環境では、とにかくノードを自動更新するという考えはありますか?
これは、Chef Fast Startチュートリアルで推奨される方法です。
knife ssh name:mynode -a ipaddress -x ubuntu -i mycredentials.pem "sudo chef-client"
これは本当に不器用です。本当に良い方法はありませんか、または実際の実稼働環境では、とにかくノードを自動更新するという考えはありますか?
回答:
そもそも物事を開始する方法ですが、一度行うだけで済みます。chef-clientの最初の実行では、通常、chef-clientデーモンをinit.dサービスとして有効にして起動します。
もっとエレガントにしたい場合は、knife-sshを捨ててsshを直接実行できます。
ssh ubuntu@ipadddress -i mycredentials.pem sudo chef-client
knife-sshはChefサーバーに対して検索を実行して検索用語(この場合name:dynode
)に一致するノードを取得するため、おそらくより高速になります。IPアドレスが既にわかっている場合は、厳密に行う必要はありません。
ec2 server create
ナイフプラグインだけで、ブートストラップがSSH +シェフ、クライアントが続い実行されます。したがって、気分が良くなる場合、シェフの作者は特に賢いものを見つけていません。
knife sshを使用して、特定のロールまたはレシピを含むすべてのボックスでchef-clientを実行できます。
knife ssh "role:web" "sudo chef-client" -x ubuntu --sudo
または、EC2を使用している場合:
knife ssh "role:web" "sudo chef-client" -x ubuntu -a ec2.public_hostname
ansibleを使用して、chef-clientをデプロイおよび実行できます。
$ ansible -i hosts all -a 'chef-client'
ansibleはpipで簡単にインストールできます:
pip install ansible
インベントリファイル(この例では「hosts」という名前)は次のようになります。
[all]
host1.example.com ansible_user=root
host2.example.com ansible_user=root
host3.example.com ansibel_user=root
(「all」は、この例の構成ファイル内のグループ化の名前です-これは任意であり、任意です。インベントリファイルには、他のグループ化も含めることができます。たとえば、[web_wervers]、[database_servers]、[chef_servers]など)
だから、もう一度、それをすべてまとめる:
> ansible -i hosts all -a 'chef-client'
または多分:
> ansible -i hosts all -a 'systemctl status'
chef-run
Chef Workstationに新しいコマンドがあります:
chef-run server_name resource_name
chef-client
存在しない場合はインストールされ、指定したリソースまたはクックブックが実行されます。