kubernetes ansible (1)
[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 이라는 리모트 매니져를 통해서 통신합니다.
- ansible-server에서 아래 명령어를 이용하여 pywinrm을 설치하도록 합니다.
- $ yum install python39 -> python이 설치 되어 있지 않았기 때문에 python 설치
$pip3 install --upgrade pip- $ pip install pywinrm -> pywinrm 설치
- ansible-server에서 /etc/ansible/hosts 파일에 (파일이 존재하지 않으면 생성) 아래 내용과 같이 windows 서버의 정보를 입력합니다. (user와 password는 Windows PC 로그인 할 때 사용하는 관리자 계정을 사용하십시오)
- [windows][windows:vars]ansible_connection=winrmansible_user='관리자계정'
- ansible_port=5986
- ansible_winrm_server_cert_validation=ignore
- ansible_password='administrator암호'
- 192.168.0.11
- Windows 서버에서 아래 명령어를 Powershell(관리자 모드)에서 실행합니다.
- $url = "https://raw.githubusercontent.com/ansible/ansible/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"(New-Object -TypeName System.Net.WebClient).DownloadFile($url, $file)
- powershell.exe -ExecutionPolicy ByPass -File $file
- $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