server

kubernetes ansible (1)

구라쟁이악마 2022. 11. 5. 14:58
[root@774bee08ece4 ~]# mkdir k8s
[root@774bee08ece4 ~]# cd k8s/
[root@774bee08ece4 k8s]# vi hosts
[root@774bee08ece4 k8s]# cat hosts
[ansible-server]
localhost

[kubernetes]
172.30.1.48

ansible-server 

kubernetes 그룹은 아이디는 호스트 아이디

 

ssh key 복사

[root@774bee08ece4 ~]# ssh-copy-id juyoungsun@172.30.1.48

 

핑 테스트

[root@774bee08ece4 ~]# ansible -i ./k8s/hosts kubernetes -m ping -u juyoungsun

 

window 

openssh 설치 후에도 에러 발생시

 

docker 컨테이너로 기동하고 있는 ansible-server에서 Windows PC(HOST)로 ssh-copy-id 명령어는 정상적인 실행이 안될 수 있습니다. ansible-server에서 Windows PC의 Openssh SERVER에 접속하여 ansible 명령어를 실행하기 위해서는 아래와 같은 방법을 사용해 보시기 바랍니다.

우선 아래 링크를 참고하시어 Windows PC에 Openssh Server를 설치하셨다는 가정아래 설명드립니다. 리눅스 서버는 SSH를 통해서 ansible이 통신하는 반면에 Windows 서버에서는 winrm 이라는 리모트 매니져를 통해서 통신합니다.

  1. ansible-server에서 아래 명령어를 이용하여 pywinrm을 설치하도록 합니다.
  2. $ yum install python39 -> python이 설치 되어 있지 않았기 때문에 python 설치

    $pip3 install --upgrade pip
  3. $ pip install pywinrm -> pywinrm 설치
  4. ansible-server에서 /etc/ansible/hosts 파일에 (파일이 존재하지 않으면 생성) 아래 내용과 같이 windows 서버의 정보를 입력합니다. (user와 password는 Windows PC 로그인 할 때 사용하는 관리자 계정을 사용하십시오)
  5. [windows][windows:vars]ansible_connection=winrmansible_user='관리자계정'
  6. ansible_port=5986
  7. ansible_winrm_server_cert_validation=ignore
  8. ansible_password='administrator암호'
  9. 192.168.0.11
  10. Windows 서버에서 아래 명령어를 Powershell(관리자 모드)에서 실행합니다.
  11. $url = "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"(New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file)
  12. powershell.exe -ExecutionPolicy ByPass -File $file
  13. $file = "$env:temp\ConfigureRemotingForAnsible.ps1"

 

ping 확인

 ansible -i ./k8s/hosts windows -m win_ping

 

./k8s/hosts

[windows]
59.13.200.90

[windows:vars]
ansible_password='2356'
ansible_connection=winrm
ansible_winrm_server_cert_validation=ignore
ansible_user='sun'
ansible_port=5986

 

 

 

[root@774bee08ece4 ~]# cat k8s-cicd-deployment-playbook.yml
- name: Create pods using deployment
  hosts: kubernetes
  # become: true
  # user: ubuntu

  tasks:
  - name: delete the previous deployment
    command: kubectl delete deployment.apps/cicd-deployment

  - name: create a deployment
    command: kubectl apply -f cicd-devops-deployment.yml

오류 발생

 

절대경로 사용해야한다 

- name: Create pods using deployment
  hosts: kubernetes
  # become: true
  # user: ubuntu

  tasks:
  - name: delete the previous deployment
    command: /usr/local/bin/kubectl delete deployment.apps/cicd-deployment

  - name: create a deployment
    command: /usr/local/bin/kubectl apply -f /Users/juyoungsun/cicd-devops-deployment.yml

ansible-playbook -i ./k8s/hosts k8s-cicd-deployment-playbook.yml -u juyoungsun

 

window경우

command -> win_command ,

파일만 전체경로 설정

ex)

  tasks:
  - name: delete the previous deployment
    win_command: kubectl delete deployment.apps/cicd-deployment

  - name: create a deployment
    win_command: kubectl apply -f /Users/juyoungsun/cicd-devops-deployment.yml

 

 

- name: create service for deployment
  hosts: kubernetes
  # become: true
  # user: ubuntu

  tasks:
  - name: create a service
    command: /usr/local/bin/kubectl apply -f /Users/juyoungsun/cicd-devops-service.yml

 

ansible-playbook -i ./k8s/hosts k8s-cicd-service-playbook.yml -u juyoungsun