본문 바로가기

Linux/RHCE

[RHCE]사용자 계정 만들기/Cron 설정하기

15. 사용자 계정 만들기

문제 15)
- http://rhgls.domain1.example.com/materials/user_list2.yml에서 생성할 사용자 목록을 
다운로드하여 /home/matthew/ansible에 저장합니다. 
- 이전에 생성한 비밀번호 보관함인 /home/matthew/ansible/locker.yml을 사용하여 
/home/matthew/ansible/users.yml이라는 플레이북을 생성하여 다음과 같이 사용자 계정을 생성합니다: 

- 직무가 developer인 사용자는 다음과 같이 처리됩니다: 
- dev 및 test 호스트 그룹의 관리 노드에서 생성됩니다. 
- pw_developer 변수에서 비밀번호를 할당받으며, 30일 후에 비밀번호가 만료되도록 설정합니다.
- 부가 그룹 devops의 멤버가 됩니다.
- 직무가 manager인 사용자는 다음과 같이 처리됩니다: 
- prod 호스트 그룹의 관리 노드에서 생성됩니다. 
- pw_manager 변수에서 비밀번호를 할당받으며, 30일 후에 비밀번호가 만료되도록 설정합니다.
- 부가 그룹 opsmgr의 멤버가 됩니다.

- 비밀번호는 SHA512 해시 형식을 사용해야 합니다. 
- 이 플레이북은 이전에 생성한 비밀번호 파일 /home/matthew/ansible/secret.txt를 사용하여 작동해야 합니다.

 

답 16)
- name: create user & group
  hosts: all

  vars_files:
    - user_list.yml
    - locker.yml

  tasks:
    - name: create group devops
      group:
        name: devops
        state: present
      when: ansible_hostname in groups['dev'] or ansible_hostname in groups['test']

    - name: create devops users
      user:
        name: "{{ item.name }}"
        password: "{{ pw_developer | password_hash('sha512') }}"
        password_expire_max: 30
        state: present
        groups: devops
        append: yes
      loop: "{{ users }}"
      when: (ansible_hostname in groups['dev'] or ansible_hostname in groups['test']) and item.job == "developers"

    - name: create group opsmgr
      group:
        name: opsmgr
        state: present
      when: ansible_hostname in groups['prod']

    - name: create opsmgr users
      user:
        name: "{{ item.name }}"
        password: "{{ pw_manager | password_hash('sha512') }}"
        password_expire_max: 30
        state: present
        groups: opsmgr
        append: yes
      loop: "{{ users }}"
      when: ansible_hostname in groups['prod'] and item.job == "manager"
      
      
  ansible-playbook users.yml
  
ansible all -m shell -a 'id node1'
ansible all -m shell -a 'id node2'
ansible all -m shell -a 'id node3'

 

 

 

 

 

16. cron 설정하기

문제 16)
/home/matthew/ansible/cron.yml라는 이름의 playbook을 만드세요. 
이 playbook은 모든 관리 대상 호스트에서 실행되며 다음과 같이 사용자 natasha의 크론 작업을 만듭니다.
natasha는 매 2분마다 실행되고 logger "EX294 in progress"를 실행하는 크론 작업을 설정해야 합니다.
답 16)

- name: cron
  hosts: all
  tasks
  - name: add cron
    cron:      
      name: config cron job
      minute: "*/2"
      user: natasha
      job: logger "EX294 in progress"

 

 

풀이과정

 

1. node1~3에 natasha 유저 생성하기 - 실제 시험에서는 필요 없음

useradd natasha

 

2. yml 파일 작성 후 실행 및 확인

ansible-playbook cron.yml
ansible all -m shell -a "crontab -u natasha -l"