AWCS EC2 이미지 (AMI)를 만들 수있는 Packer를 사용할 수 있습니다. Ansible은 Java 8을 설치하고, 데이터베이스 (Cassandra)를 설치하고, Ansible을 설치하고, Ansible 플레이 북을 업로드하는 데 사용됩니다 (나는 게임 북을 밀고 당겨야한다고 알고 있지만, 제대로 작동하면이 작업을 수행 할 것입니다). 인스턴스를 AMI (예 : Cassandra 옵션에 현재 인스턴스 IP 추가)에서 시작할 때 일부 Cassandra 속성을 변경해야하기 때문에 Ansible을 설치하고 안내서를 업로드합니다. 이것을 달성하기 위해 간단한 bash 스크립트를 작성했습니다.이 스크립트는 user-data-file
속성으로 추가되었습니다. 이 스크립트는 다음과 같습니다.EC2 인스턴스에서 사용자 데이터 스크립트로 실행 가능 플레이 북
#cloud-boothook
#!/bin/bash
#cloud-config
output: {all: '| tee -a /var/log/cloud-init-output.log'}
ansible-playbook -i "localhost," -c local /usr/local/etc/replace_cassandra.yaml
본인은 로컬 호스트 모드에서 가동 가능 플레이어를 실행하고 있습니다.
문제는 인스턴스를 시작할 때 /var/log/cloud-init.log
파일에서 오류가 발생한다는 것입니다. 오류 ansible-playbook
찾을 수 없습니다. 그래서 줄을 사용자 데이터 스크립트 안에 추가하여 /usr/bin/
폴더 (Anecess가 설치된 폴더)의 내용을 확인하고 그 안에 Anagers가 없었지만 ssh를 사용하여 인스턴스에 액세스하면 Ansible이 /usr/bin/
폴더 안에 있으며 아무런 문제가 없습니다.
누구와 비슷한 문제가 발생 했습니까? 나는 이것이 EC2와 함께 Ansible에게 꽤 인기있는 사용 사례 여야한다고 생각한다.
내가 거기에 사용자 데이터를 실행하는 동안, 더 Ansible 없지만, 데이터베이스뿐만 아니라 행방 불명입니다뿐만 아니라 사실을 발견 된 일부 로그인 한 후 편집
.
Packer의 Anecess 공급자의 일부 코드 (또는 그 전부)가 인스턴스가 시작될 때 실행될 수 있습니까?
EDIT2
여기 무슨 일이 일어나고 있는지 발견했다. 패커를 통해 사용자 데이터를 추가 할 때 user_data_file
속성을 사용하면 패커가 인스턴스를 실행하여 AMI를 빌드 할 때 사용자 데이터가 실행됩니다. Anecess 제공자가 실행되기 전에 스크립트가 시작되어 Anabilities가 누락 된 이유입니다.
사용자 데이터를 AMI에 자동으로 추가하여 AMI에서 인스턴스가 시작될 때 패커가 해당 AMI를 빌드 할 때가 아니라 사용자 데이터가 실행되도록하려는 것입니다.
방법에 대한 아이디어가 있으십니까?
# cloud-config 형식이 잘못되었습니다. 이 [doc] (http://cloudinit.readthedocs.io/en/latest/topics/examples.html#run-commands-on-first-boot)와 같이'bootcmd :'에 anabilities-playbook 명령을 넣으십시오. –
I 이것이 문제라고 생각하지 마십시오. 내 질문에 말했듯이,'/ usr/bin' 폴더에 '책임감있는 플레이 북'이 없기 때문에 코드가 작동하지 않습니다. –
비슷한 문제는 포장 업체가없는 경우에만 표시됩니다. pip install able; 실무 플레이 북 ... 무의식적 인 플레이 북에 대해 foud가 아닌 명령으로 실패 함 –