Ansible 실습 문제

신민창·2021년 4월 7일

Ansible

목록 보기
4/4
  1. user 사용자의 홈디렉토리에 project1 디렉토리를 생성하고, 디렉토리 내에 inventory.ini 파일을 생성하여, Control node를 포함한 모든 시스템을 등록하시오.
    control 그룹에 Control node를, webservers 그룹에 managed1 호스트를, dbservers 그룹에 managed2호스트를 등록하시오.
    webservers 와 dbserver 그룹을 자녀로 가지는 servers 부모 그룹을 설정하시오.

    $ mkdir project1
    $ cd project1
    $ vi inventory
    [control]
    control.example.local
    
    [webservers]
    managed1.example.local
    
    [dbservers]
    managed2.example.local
    
    [servers]
    managed1.example.local
    managed2.example.local
  2. main 에서 ansible ad-hoc 명령을 사용하여, Control node를 포함한 모든 시스템에 다음 사용자를 추가하시오.
    사용자이름 : ansible
    UID : 2000
    암호 : P@ssw0rd

참고: 사용자 암호 설정
{{ 'P@ssw0rd' | password_hash('sha512') }}

$ ansible -i inventory.ini -m user -a 'name=ansible uid=2000 password={{ "P@ssw0rd" | password_hash("sha512") }}' webservers --become
  1. Control node의 user 사용자가 Control node를 포함한 모든 시스템의 ansible 사용자로 패스워드 없이 로그인 할 수 있도록 설정하시오. 가능하다면 이 작업을 ansible을 통해 수행하시오. (authorized_key 모듈 검색)
$ ansible -u ansible -i inventory.ini -m authorized_key -a 'user=ansible state=present key={{ lookup("file", "/home/user/.ssh/id_rsa.pub") }}' webservers --ask-pass
  1. 2번에서 생성한 각 사용자가 패스워드 없이 sudo 권한을 사용할 수 있도록 설정하시오. 이 때, visudo 명령을 사용하여 직접 /etc/sudoers 파일을 수정하지 말고, /etc/sudoers.d/ansible 파일을 생성하여 적용되도록 하시오.
$ ssh user@managed1.example.local
$ sudo vi /etc/sudoers.d/ansible
ansible	ALL=(ALL)	NOPAWWED: ALL
exit
exit

해당 작업 반복
  1. ./home/user/project1 에서 실행하는 ansible 작업에 대한 설정 파일을 생성하시오. 이 파일은 다음과 같은 내용을 포함하도록 하시오.
  • 인벤토리 파일: /home/user/project/inventory.ini
  • 원격 접근시 사용할 사용자 : ansible
  • 원격 작업시 권한 상승 : 기본적으로 사용하지 않음
  • 원격 작업시 권한 상승 방법 : sudo
  • 원격 작업 권한 상승 시도시 패스워드 묻기 : 사용하지 않음
$ vi ansible.cfg

[defaults]
inventory = ./inventory
remote_user = ansible
ask_pass = false

[privilege_escalation]
become = false
become_method = sudo
become_user = root
become_ask_pass = true
  1. 웹 서비스를 구성하기 위한 다음 플레이북을 작성하시오. 가능하면 변수 등을 사용하여 작성하시오.
    (webservers)
  • 웹서버에 설치하여야 할 패키지 : httpd, firewalld, php (latest)
  • 패키지 설치 후 구동할 서비스 : httpd, firewalld
  • firewalld 방화벽을 웹 서비스에 대하여 허용하여야 함
    (dbservers)
  • db서버에 설치하여야 할 패키지 : firewalld, mariadb-server
  • 패키지 설치 후 구동할 서비스 : mariadb, firewalld
  • firewalld 방화벽을 db 서비스에 대하여 허용하여야 함
---
- name: webserver is ready
  hosts: webservers
  become: true
  vars:
    packages:
      - httpd
      - firewalld
      - php
  tasks:
    - name: package must be installed
      yum:
        name: "{{ packages }}"
        state: latest
    - name: service must be started - httpd
      service:
        name: httpd
        state: started
    - name: service must be started - firewalld
      service:
        name: firewalld
        state: started
    - name: firewall enabled
      firewalld:
        service: http
        state: enabled
        permanent: true

- name: dbserver is ready
  hosts: dbservers
  become: true
  vars:
    packages:
      - firewalld
      - mariadb-server
  tasks:
    - name: package must installed
      yum:
        name: "{{ packages }}"
        state: latest
...

0개의 댓글