이것이 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 + 요리사 클라이언트 다음 부트 스트랩. 따라서 기분이 나아진다면 Chef 작성자는 특히 똑똑한 것을 찾지 못했습니다.
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
인벤토리 파일 (예 : 이름이 "호스트")은 다음과 같습니다.
[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
존재하지 않는 경우 설치 하고 지정한 리소스 또는 요리 책을 실행합니다.