[Ansible] Ansible을 이용해서 비밀번호 일괄 변경하기
우선 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=바꿀비밀번호
대상서버 접속하면 바꾼 비밀번호로 로그인하면 된다.