Chef와 EC2 metadata(user data)를 이용해서 운영체제와 소프트웨어의 형상을 관리하고 있습니다….

Chef와 EC2 metadata(user data)를 이용해서 운영체제와 소프트웨어의 형상을 관리하고 있습니다.

깔끔하게 돌아가긴 하는데, chef 코드 버전관리와 관련된 문제가 있습니다.

예를들어, 운영체제의 유저접근 정책을 chef로 관리하고 있습니다. 운영체제가 올라오면, 쓸데없는 계정 지우고, 필요계정 생성하고, ssh 설정파일 만들고 ssh 접근을 위한 key 설정하고 등등등. 편의상 이 cookbook을 users 라고 명명하겠습니다.

이게 chef의 특성상 chef client가 실행될 때 마다 users cookbook을 실행을 합니다.

그래서 지금껏 사용했던 방법이
* cookbook을 한번 실행 하면, 실행 했다는 정보를 임시파일에 저장한다. chef-client를 호출하기 전에 임시파일을 검사해서 실행 여부를 결정한다.
* 설정이 바껴서 chef-client를 실행해야 한다면, ssh로 접근 임시파일을 삭제 한후 chef-client를 호출한다.
대충 이런 방식이었습니다.

돌아는 가는데, cookbook 마다 임시파일을 관리해야 한다는 점. ssh로 접근해서 실행하는 방식이라서 뭔가 찜찜한게 좀 그렇습니다.

좋은 방법 있으면 공유 부탁드립니다.

2 thoughts on “Chef와 EC2 metadata(user data)를 이용해서 운영체제와 소프트웨어의 형상을 관리하고 있습니다….

  1. 음? 대부분의 chef 명령들은 ‘행위’를 정의하는게 아니라 ‘결과’를 정의하기 때문에 그런식으로 임시 파일을 둘 필요가 없습니다. 커스텀 스크립트를 만드신거라면 chef 로 제대로 다시 만드시면 됩니다.

  2. chef 의 resource 를 정의 하실 때 보면 only_if, not_if 등을 사용하시면 재실행이 되지 않도록 할 수 있습니다. 홍성진 말씀대로 chef 에서 제공하는 대부분의 리소스들과 open source 로 제공되는 녀석들은 대부분 재실행이 되지 않도록 작업되어 있습니다.

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.