운영체제/Linux

[Ansible] Ansible을 이용해서 비밀번호 일괄 변경하기

팽팽 2023. 8. 26. 23:56

우선 ec2를 두 대 띄우자

- Ubuntu server -> target server

- linux server -> ansible server

 

1.  target server :  ubuntu 들어가서 사용자 생성하기

sudo adduser newuser
su newuser

 

2. ansible server : linux 서버 들어가서 ansible 설치하기

sudo amazon-linux-extras install ansible2
ansible --version

 

3. host 등록하기

대상 서버인 ubuntu 서버의 ip주소를 등록해준다

key.pem은 인스턴스 생성할때 지정한 키파일이라서 따로 해당 경로에 키값을 저장해줘야한다.

vi /etc/ansible/hosts


[clients]
43.201.51.116 ansible_user=ubuntu ansible_ssh_private_key_file=/etc/ansible/key.pem

 

 

4. ping test

ansible all -m ping

 

입력하면, 접근권한이 없기때문에 테스트가 안됨

그래서 ssh키를 생성해서 대상서버의 authorized_key에 똑같은 키값을 등록해줘야함

 

cd ~/.ssh로 이동하고 ssh-keygen -t rsa 입력 

 

ls ~/.ssh

authorized_keys id_rsa id_rsa.pub

여기서 이 id_rsa.pub-> public key를 대상 서버로 전송한다.

ssh-copy-id -i ~/.ssh/id_rsa.pub newuser@192.168.56.101

처음에 하면 publickey denied가 될 것임

그래서 대상서버의 ssh option을 변경해서 password 입력할 수 있게 해준

sudo vi /etc/ssh/sshd_config

PasswordAuthentication yes

sudo service ssh restart

~/.ssh/ 경로에 'authorized_keys' 파일이 생성된 것을 확인할 수 있다.

ssh 연결이 잘 되는걸 확인할 수 있음

그리고 ping테스트도 잘 된다.

 

5. playbook으로 비밀번호 일괄 변경하기

- yaml 파일 생성해서 playbook 을 작성하자 : hosts에 위에서 지정해줬던 host그룹이름으로 지정하고, sudo 권한으로 바꾸겠다고 지정했다.

- name: update user password
  hosts: clients
  become: yes
  become_method: sudo
  tasks:
  - user:
      name: 대상서버유저이름
      update_password: always
      password: "{{ newpassword|password_hash('sha512') }}"
~
~
~

 

 

- 명령어 입력

ansible-playbook updatepasswd.yml -i hosts --extra-vars newpassword=바꿀비밀번호

대상서버 접속하면 바꾼 비밀번호로 로그인하면 된다.