Ansible [설치, 키기반인증, 인벤토리, 구성파일, apt모듈]

강재민·2022년 6월 17일
0
post-thumbnail

Chocolatey 설치하는 링크


Vagrant 설치하는 링크


Vagrantfile

Vagrant.configure("2") do |config|
	# Define VM
	config.vm.define "ansible" do |ubuntu|
		ubuntu.vm.box = "ubuntu/focal64"
		ubuntu.vm.hostname = "ansible"
		ubuntu.vm.network "private_network", ip: "192.168.56.100"
		ubuntu.vm.provider "virtualbox" do |vb|
			vb.name = "ansible"
			vb.cpus = 2
			vb.memory = 3000
		end
	end
	config.vm.define "node1" do |ubuntu|
		ubuntu.vm.box = "ubuntu/focal64"
		ubuntu.vm.hostname = "node1"
		ubuntu.vm.network "private_network", ip: "192.168.56.110"
		ubuntu.vm.provider "virtualbox" do |vb|
			vb.name = "node1"
			vb.cpus = 2
			vb.memory = 2048
		end
	end
	config.vm.provision "shell", inline: <<-SHELL
	  sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config
	  sed -i 's/archive.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list
	  sed -i 's/security.ubuntu.com/mirror.kakao.com/g' /etc/apt/sources.list
	  systemctl restart ssh
	SHELL
end

window에서 ssh접속 등록하기

~/.ssh/config

Host ansible
    HostName 192.168.56.100
    User vagrant
    IdentityFile C:\Users\Administrator\vagrant\.vagrant\machines\ansible\virtualbox\private_key

Host node1
    HostName 192.168.56.110
    User vagrant
    IdentityFile C:\Users\Administrator\vagrant\.vagrant\machines\node1\virtualbox\private_key
### 터미널을 연 상태에서..

ssh ansible
ssh node1
### 이렇게만 해줘도 접속이 가능하다

Ansible 설치

sudo apt update
sudo apt install -y ansible

키기반 인증

ansible에서..

ssh-keygen
cat ~/.ssh/id_rsa.pub		#공개키
cat ~/.ssh/id_rsa			#개인키
cat authorized_keys			#window의 공개키

쉽게 설명해보면 공개키개인키를 이용해서 만들었고
개인키로 만든 공개키가 접속하려는 가성머신의 authorized_keys에 등록 되어있으면 ssh접속이 가능하다.
지금은 윈도우의 개인키로만든 공개키가 ansible의 authorized_keys에 등록되어있다.


키기반 인증 실습

ansible에서..

cat ~/.ssh/id_rsa.pub		#공개키

공개키를 복사해서
node1의 autorized_keys에 붙여넣으면
node1에서..

vi ~/.ssh/authorized_keys

ansible에서..

ssh vagrant@192.168.56.110

접속이 가능하다


구성파일

ANSIBLE_CONFIG (enironment variable if set)
ansible.cfg (현재 작업 디렉토리)
~/.ansible.cfg (홈디렉토리)
/etc/ansible/ansible.cfg : 기본 설정 파일
위 4가지 방식으로 구성파일을 적용시킬 수 있다.

vi ~/.ansible.cfg
[defaults]
inventory = hosts.ini
vi hosts.ini
[node1]
192.168.56.110
ansible all -m ping


그리고.. 구성파일에서

vi ~/.ansible.cfg
[defaults]
remote_user=><SSH_USER>
ask_pass=<True|False>
host-key-checking=False	#이 값을 false해주면 ssh fingerprint 질문을 스킵할 수 있다. 꿀팁

[privilege_escalation]
become=<True|False>
become	
become_method=<sudo|su>
become_user=<SUDO_USER>

ansible-config 명령

  • ansible-config list : 설정 가능한 모든 항목 표시
  • ansible-config dump : 모든 설정의 기본 값 및 변경 값 표시
  • ansible-config view : 현재 적용되는 설정 파일의 내용 표시
    초록색은 이상없이 실행 변경 x
    노랑색은 변경 o
    빨간색은 문제가 있음

권한 상승 옵션

  • -b, --become : 권한 상승
    - 옵션 사용하지 않으면 --> 권한상승 하지 않음
  • --become-method <sudo|su>
    - sudo: 기본값
    - su
  • --become-user : 어떤 사용자?
    - root: 기본값
  • -K, --ask-become-pass : sudo 패스워드 묻기
    - 옵션 사용하지 않으면 --> Passwordless sudo
### 예를들어
ansible-playbook deployment.yaml -b		#하면 sudo권한으로 실행

apt 모듈

### 설치된 모듈 확인하기
ansible-doc -l
ansible-doc <MODULE_NAME>
mkdir ~/playbook
vi ~/playbook/install_httpd.yaml
- name: Update repositories cache and install "apache2" package
  hosts: node1
  tasks:
    - apt:
        name: apache2
        state: present              #설치의 상태를 나타냄
        update_cache: yes           #설치하기 전에 apt-get update를 해줌
    - service:
        name: apache2
        enabled: yes                #apache2를 enable시켜서 재부팅시에도 실행하도록 설정
        state: started              #apache2를 실행시킴
ansible-playbook install_httpd.yaml -b


0개의 댓글