이쿠의 슬기로운 개발생활

함께 성장하기 위한 보안 개발자 EverNote 내용 공유

반응형

클라우드/Ansible 21

ansible-vault 리서치

ansible-vault 리서치 문제 상황 inventory 파일에 작성하는 host 정보 중 sudo 옵션 관련 root password, ssh password 접속 관련 user password 등 민감 정보를 저장해야하는 경우가 있음. 이런 민감 정보가 invetory 파일에 평문으로 작성되는 경우 보안적으로 큰 문제가 됨. 해당 정보를 encryption 해서 저장할 수 있는 방법에 대해 리서치 하던 중 ansible-vault를 알게되어 사용법을 정리함. ex) 문제가 되는 inventory file ansible-vault란 ansible이 설치되면 default로 ansible-vault도 함께 설치가 됨. Ansible Vault는 inventory, playbook의 변수나 파일을 암호..

Ansible dynamic inventory란?

Ansible dynamic inventory란? 문제 상황 ansible 사용 시 inventory를 작성할 때 host가 수가 매우 많거나 autoscaling 이나 외부 application들에 의해 관리되어서 host 수가 유동적인 경우 inventory를 작성하기 어려움. 이를 해결하기 위한 방법을 찾아보던 중 Dynamic inventory를 찾아서 사용법을 알아보기로 함. Ansible Dynamic inventory란? Ansible은 Inventory를 통해 정보를 아주 편하게 playbook으로 넘길 수 있음 하지만 이 inventory의 단점은 정보가 정적이라는 것임. 즉 inventory에 있는 정보는 사용자가 직접 수정하지 않은 이상 변하지 않음. 이 단점이 host가 적은 경우에..

Ansible playbook에서 sudo 사용하기

Ansible playbook에서 sudo 사용하기 문제 상황 Ansible로 host에 접속해야하는데 해당 host는 ssh접속 시 root계정은 막혀있음. 일반 계정으로 ssh 접속 가능. 하지만 Ansible로 확인해야하는 파일은 root 권한이 있어야 확인 가능함. 이를 해결하기 위해 Ansible 접속 시 일반 계정으로 접속해서 sudo 명령으로 진행해야함. 환경 [host] SSH 접속 : root 차단, centos 계정으로 접속 가능 확인해야하는 파일 경로 : /root/rootTempFile.txt 문제가 되는 ansible playbook [예제 playbook] --- - hosts: all tasks: - name: execute the script command: cat /root..

Ansible, Hashicorp vault container 연동

Ansible, Hashicorp vault container 연동 환경 [Ansible Server] CentOS7 ip : 10.0.2.10 [원격 Server] CentOS7 ip : 10.0.2.7 Docker를 사용한 방법 사전 작업 docker 설치 yum update -y yum install -y yum-utils device-mapper-persistent-data lvm2 yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo yum install -y docker-ce systemctl start docker systemctl enable docker.service 작업 폴더 생성 mkd..

Ansible "to use the 'ssh' connection type with passwords, you must install the sshpass program"

Ansible 에러 정리 "to use the 'ssh' connection type with passwords, you must install the sshpass program" [오류상태] fatal: [10.0.2.7]: FAILED! => {"failed": true, "msg": "to use the 'ssh' connection type with passwords, you must install the sshpass program"} [원인] host에 sshpass가 설치되어있지 않아서 발생 [해결법] CentOS : yum install -y sshpass Ubuntu : apt-get install -y sshpass

Ansible directory, file 생성 후 file 내용 추가

localhost에 directory, file 생성 후 내용 추가 (file 모듈) playbook 예제 --- - hosts: localhost connection: local become: true tasks: - name: Creates directory file: path: ~/test state: directory - name: Creates file file: path: ~/test/test.txt state: touch - name: insert String in file lineinfile: path: ~/test/test.txt line: "insert test data!!!" File, lineinfile module 사용 playbook 실행 ansible-playbook -i ho..

Ansible Play boock "Are you sure you want to continue connecting (yes/no)" 항목 Pass 하는 법

Ansible Play boock "Are you sure you want to continue connecting (yes/no)" 항목 Pass 하는 법 문제 상황 Ansible로 여러 host를 자동화로 관리해야하는데 아래와 같은 상황이 발생해서 key 입력을 해줘야함. key입력 없이 한번에 자동으로 되야하는데 매우 곤란한 상황이 발생함. 원인 Ansible Server에서 manager node(원격 host)에 최초 ssh 접속 시도를 하면 사용자에게 해당 host에 접속을 할 것 인지 확인을 거치게 됨. host에 접속이 최초인지 아닌지 ssh가 확인하는 방법은 Known_hosts 파일을 통해서 진행함. Known_hosts 파일에 host의 내용이 존재하지 않으면 해당 메세지를 출력해서 ..

Ansible 파일, 디렉터리 삭제 (file 모듈)

파일, 디렉터리 삭제 (file 모듈) playbook 예제 --- - hosts: all remote_user: root become: true tasks: - name: delete file file: path: /temp/{{item}} state: absent with_items: - test.sh - sample.txt - name: delete directory file: path: /temp/ state: absent 파일 삭제의 경우 shell 모듈을 사용해서 명령을 통해 제거도 가능하지만 file 모듈을 사용해서 제거해보기로 함. file 모듈은 state: absent를 사용하여 대상 파일을 제거함. 파일이 없는 경우 무시하고 지나감 with_item 를 사용하여 여러 파일을 삭제할 수..

Ansible 파일이 생성되면 가져오기 (wait_for 모듈)

파일이 생성되면 가져오기 (wait_for 모듈) playbook 예제 --- - hosts: all remote_user: root become: true tasks: - name: check file exists wait_for: path: /temp/sample.txt - name: file move to control node fetch: src: /temp/sample.txt dest: ./managedNodeFile.txt flat: yes wait_for 모듈 사용함. wait_for 모듈은 특정 동작을 대기, 확인할 때 사용됨. Application의 상태를 확인하거나, 파일의 존재여부를 확인, 파일의 특정 내용의 유무 등을 확인하여 다음 동작의 여부를 판단하는데 사용함. playbook ..

반응형