Ansible 변수 3 | 팩트 변수, 특수 변수, 템플릿(template)
·
IaC/Ansible 이론
1. 팩트(fact) 변수 팩트 변수는 운영 체제 관련 정보, IP 주소, NIC 정보, 디스크 장치, 배포판, 환경 변수, CPU 정보, 메모리 정보, 마운트 정보 등 관리 노드의 정보를 가진 변수입니다. ansible_ 로 시작하는 변수로 접근할 수 있습니다. 별도로 설정하지 않는 한, 기본적으로 플레이 실행시 첫 번째 작업으로 해당 호스트의 정보를 팩트 변수로 자동으로 수집하고 메모리에 저장합니다. ( TASK [Gathering Facts] ) 1) Ad-hoc 명령에서 팩트 변수 확인 setup 모듈을 이용하여 팩트 변수를 확인할 수 있습니다. ansible all -m setup ansible localhost -m setup -a 'filter=ansible_hostname' 2) 팩트 변수..
Ansible 변수 2 | 조회(lookup), 프롬프트(vars_prompt), 필터(Filters)
·
IaC/Ansible 이론
1. 조회(lookup) 플러그인 조회(lookup) 플러그인은 파일, 인벤토리, 키/값 저장소, API 등 외부 소스에서 데이터를 검색해 변수로 가져올 수 있습니다. 조회 플로그인의 목록은 다음 명령으로 확인할 수 있습니다. ansible-doc -t lookup -l 다음은 file 조회 플러그인을 이용해 파일의 내용을 변수로 가져오는 예제입니다. - hosts: databases vars: auth_key: "{{ lookup('file', /home/devops/.ssh/id_rsa.pub') }}" tasks: - name: set authorized keys authorized_key: user: devops state: present key: "{{ auth_key }}" 다음은 url 조회..
Ansible 변수 1 | 변수명, 예약 키워드, 변수 정의/참조/위치/범위/우선 순위
·
IaC/Ansible 이론
Ansible 변수 Ansible을 이용하여 시스템의 구성 관리를 자동화할 수 있지만, 모든 시스템이 항상 같은 구성을 가지지 않고 경우에 따라 다른 구성을 가져야 할 수도 있습니다. 예를 들어 해당 시스템의 IP 주소를 찾아 해당 IP 주소로 구성해야할 수도 있습니다. 이 때 Ansible은 변수를 사용하여 시스템 간 차이를 처리합니다. 1. 변수 이름 변수 이름에는 문자, 숫자, 밑줄만 포함할 수 있습니다. 그러나 숫자로 시작할 수는 없습니다. 또한 이미 예약된 플레이북 키워드나 Python 키워드는 사용할 수 없습니다. (예약어는 사용 불가) - 유효한 변수 이름 Ex) foo foo_env foo_port foo5 _foo - 유효하지 않은 변수 이름 Ex) *foo foo-port foo por..
Ansible 플레이북(Playbook) | YAML 구문, 플레이, 작업, 모듈, 멱등성, 실행, 검증
·
IaC/Ansible 이론
Ansible 플레이북(Playbook) Ansible 플레이북은 반복 가능하고 재사용 가능하며 간단한 구성 관리부터 여러 호스트에 복잡한 애플리케이션을 배포하는 데 매우 적합합니다. 작업을 두 번 이상 실행해야 하는 경우 Ad-hoc 명령을 사용하지 않고, 플레이북을 작성한 후에 Git과 같은 소스 제어를 사용하는 것을 권장합니다. ◆ Ansible 플레이북(Playbook) 예제 https://github.com/ansible/ansible-examples GitHub - ansible/ansible-examples: A few starter examples of ansible playbooks, to show features and how they work together. Se A few star..
Ansible Ad-Hoc 명령 | -m 옵션, -a 옵션, 모듈의 반환 값(return values)
·
IaC/Ansible 이론
Ad-Hoc 명령 ad-hoc 명령은 하나 이상의 관리 노드에 단일 작업을 실행하는 임시 명령입니다. 임시 명령은 거의 반복하지 않는 간단한 작업에 주로 사용합니다. - 임시 명령의 사용 예 서버 재부팅 파일 관리 패키지 관리 사용자 및 그룹 관리 서비스 관리 팩스 변수 수집 1. Ad-hoc 명령 사용 ansible [pattern] -m [module] -a "[module options]" -m : 모듈 이름 지정 (default : command) -a : 모듈의 옵션 / 아규먼트 2. Ad-hoc 명령 사용 예 1) 시스템 재부팅 ansible databases -a "/sbin/reboot" -u username -b -K 2) 파일 복사 ansible foo.example.com -m cop..
Ansible 모듈 및 플러그인 | 모듈 종류, 플러그인 종류, 확인
·
IaC/Ansible 이론
Ansible 모듈 및 플러그인 확인 모듈은 Ansible을 이용해 관리 노드에 작업을 실행하는 핵심 요소입니다. 모듈은 Python 코드로 이루어져 있으며, /usr/lib/python3/dist-packages/ansible 경로에 있습니다. 현재 버전(2.9) 기준으로 약 3000개가 넘는 모듈이 존재합니다. ansible-doc 명령을 이용하여 모듈의 목록과 모듈의 사용법을 확인할 수 있습니다. 1. ansible-doc 명령 사용 (1) 모듈 목록 확인 ansible-doc -l (2) 특정 모듈 확인 ansible-doc ◆ 모듈 목록 https://docs.ansible.com/ansible/2.9/modules/modules_by_category.html Module Index — Ansi..
Ansible 관리 노드 연결 | 인증, SSH, 권한 상승, 연결 플러그인
·
IaC/Ansible 이론
관리 노드(Managed Nodes) 연결 제어 노드(Control Nodes)는 기본적으로 OpenSSH를 통해 관리 노드(Managed Nodes)에 접근합니다. OpenSSH는 ControlPersist(성능 향상 기능), Kerberos 및 점프 호스트(~/.ssh/config) 등의 옵션을 지원합니다. 간혹 오래된 OpenSSH 버전에서는 ControlPersist 기능을 지원하지 않는데, 이러한 경우 Python 자체에서 구현된 'paramiko'라는 SSH 구현으로 대체됩니다. 1. 인증 Ansible은 제어 노드의 현재 로그인된 사용자와 동일한 이름의 사용자를 관리 노드에 연결합니다. 이는 OpenSSH의 특성과 같습니다. 또한 인증의 경우 제어 노드의 SSH 키로 인증을 시도합니다. 대부..
Ansible 구성 파일 | 우선 순위, 설정 확인, ansible-config
·
IaC/Ansible 이론
Ansible 구성 파일 Ansible 구성 파일은 Ansible의 작동 방식을 구성하는 파일입니다. Ansible 구성 파일에는 인벤토리 파일의 위치, 관리 노드에 연결하는 방법, 연결한 후의 작동 방법 등 무수히 많은 구성을 지정할 수 있습니다. 기본 Ansible 구성 파일의 위치는 /etc/ansible/ansible.cfg 이며, 변형된 INI 형식을 사용합니다. ◆ 변형된 INI 형식 - 주석이 줄 처음부터 시작할 때 : #과 ; 모두 주석 표시에 사용 가능 - 일반 값과 함께 주석을 사용할 경우 : only ; 만 사용 가능 1. Ansible 구성 파일 우선 순위 우선 순위가 높은 파일에 정의된 값이 이전에 정의된 값보다 우선합니다. 즉, 이미 정의된 값이 있더라도 그보다 우선 순위가 높은..
Ansible 인벤토리(Inventory) | 정적 인벤토리, 동적 인벤토리, INI, YAML, 패턴
·
IaC/Ansible 이론
인벤토리(Inventory) Ansible은 인프라에 존재하는 여러 호스트를 관리하는데, 이런 호스트의 목록 또는 그룹을 지정한 인벤토리 파일을 필요로 합니다. 인벤토리가 정의되면 패턴을 사용하여 Ansible을 실행할 노드 또는 그룹을 선택합니다. 기본 인벤토리 파일은 /etc/ansible/hosts 이며, -i 옵션을 사용하여 다른 인벤토리 파일을 지정할 수 있습니다. 또한 여러 인벤토리 파일을 동시에 지정하거나, 클라우드 또는 CMDB에서 동적으로 관리 노드를 가져올 수도 있습니다. 인벤토리 파일은 일반적으로 INI 파일 형식을 가지고 있으며, YAML 파일 형식으로도 지정할 수 있습니다. 1) 정적 인벤토리 정적 인벤토리는 사용자가 직접 INI 또는 YAML 형식으로 파일을 작성합니다. (1) ..
Ansible 설치 | 설치 전 요구사항, 명령 쉘 자동 완성, Ansible Lint 설치
·
IaC/Ansible 이론
※ Ansible 2.9 및 Ubuntu 20.04 LTS 기준으로 작성되었습니다. Ansible 설치 1. 설치 전 요구 사항 1) 제어 노드(Control Nodes) 요구사항 Python2(version 2.7) 또는 Python3(version 3.5 이상) 설치 RedHat Enterprise Linux, Debian, CentOS, Ubuntu, MacOS, BSD 등 Unix 계열 Windows는 지원하지 않습니다. 2) 관리 노드(Managed Nodes) 요구사항 SSH 통신이 가능해야 합니다. SFTP를 사용할 수 있어야 합니다. (SFTP를 사용할 수 없는 경우 SCP 사용 가능) Python2(version 2.6 이상) 또는 Python3(version 3.5 이상) 설치 2. A..
Greta Lee
'앤서블' 태그의 글 목록