앤서블의 호스트 지정 패턴

플레이북의 host 매개 변수에 보통 단일 호스트 또는 그룹을 지정하는데..

hosts: web

단일 호스트 또는 그룹을 지정하는 대신 패턴을 지정할 수도 있다. 이미 all 패턴을 봤었다. all  패턴은 알려진 모든 호스트들에 대해 플레이를 실행할 것이다.

hosts: all

콜론을 사용해 두 그룹의 합집합을 지정할 수 있다. 다음처럼 모든 dev 머신 및 staging 머신을 지정할 수 있다.

hosts: dev:staging

\콜론과 앰퍼샌드(:&)를 사용하여 교집합을 지정할 수 있다. 예를 들어 staging 환경에서 모든 데이터베이스 서버를 지정하려면 다음처럼 지정할 수 있다.

hosts: staging:&database


표 9-1은 앤서블이 지원하는 패턴을 보여준다. 정규식 패턴은 항상 물결 기호(~)로 시작한다.



액션

사용 예시

모든 호스트

all

모든 호스트

*

합집합

dev:staging

교집합

staging:&database

배제

dev:!queue

와일드카드

*.example.com

번호로 지정한 서버의 범위

web[5:10]

정규식

~web\d+\.example\.(com|org)





앤서블은 여러 패턴 조합을 지원한다. 예를 들면 다음과 같다.

hosts: dev:staging:&database:!queue




또한 호스트의 임의 조합을 예시처럼 지정할 수 있다. $ ansible-playbook -l 'staging:&database' playbook.yml


Posted by '김용환'
,


ansible-vault 커맨드 간단 정리



커맨드

설명

ansible-vault encrypt file.yml

일반 텍스트 파일인 file.yml을 암호화한다

ansible-vault decrypt file.yml


암호화된 file.yml 파일을 해독한다

ansible-vault view file.yml

암호화된 file.yml 파일의 내용을 출력한다

ansible-vault create file.yml

암호화된 새로운 파일 file.yml을 생성한다

ansible-vault edit file.yml

암호화된 파일 file.yml 파일을 수정한다

ansible-vault rekey file.yml

암호화된 파일 file.yml의 암호를 변경한다




앤서블 2.4 버전부터는 커맨드 라인에서 --vault-id를 사용해 볼트 암호 사용을 권장하고 있다.


암호가 ~/password.txt 텍스트 파일에 저장되어 있고 --vault-id 플래그를 사용해 암호 파일의 위치를 ansible-playbook 에게 전달한다.

ansible-playbook --vault-id ~/password.txt secrets.yml


암호화 파일을 해독하려면 --vault-id @prompt 플래그를 사용한다.

ansible-playbook --vault-id @prompt secrets.yml



앤서블 2.4 버전 이전에는 앤서블 실행시 하나의 볼트 암호만 사용할 수 있었었지만 2.4 버전 이후부터 다중 볼트 암호를 사용하여 지원해 --vault-id를 여러 번 제공할 수 있다. 그러나 --vault-id 옵션은 Ansible 2.4 이전 버전을 지원하지 않는다.

여러 볼트 암호가 제공된 경우 기본적으로 앤서블은 커맨드 라인에서 제공된 순서대로 각 볼트 암호를 시도하여 볼트 내용을 해독할 것이다.

예를 들어 특정 파일에 읽은 'dev' 암호를 사용해 'prod' 암호를 입력하라는 메시지를 표시하려면 다음과 같이 사용할 수 있다.

 

ansible-playbook --vault-id dev@dev-password --vault-id prod@prompt secrets.yml



자세한 정보는 https://docs.ansible.com/ansible/latest/user_guide/vault.html에..



Posted by '김용환'
,



sbt test를 실행하다 다음과 같이 종료 에러가 나면.. (Intellij에서는 이상이 없다)



19/01/17 22:16:40 ERROR Utils: uncaught error in thread spark-listener-group-streams, stopping SparkContext

java.lang.InterruptedException

at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.reportInterruptAfterWait(AbstractQueuedSynchronizer.java:2014)





build.sbt에 다음 파일을 추가한다.


fork in run := true 


로 수정한다. info 로그를 error로 처리하는 것이 맘에 들지 않지만 .. 작동은 된다.





Intellij와 sbt를 함께 사용하고 있기 떄문에 그럴 수 있는데.


console 커맨드를 사용해 scala 코드를 실행하면 SBT와 동일한 가상 시스템에서 코드가 실행된다. 상황에 따라 System.exit 호출이나 종료되지 않은 스레드와 같이 SBT가 중단될 수 있다. 


테스트 결과 JVM이 종료되면 SBT를 다시 시작해야 하는 상황을 피하기 위해 JVM을 포크하는 fork in run := true를 추가한다.

Posted by '김용환'
,