ansible-basic
요청하신 Ansible을 이용한 k3s + Helm + ArgoCD 설치 플레이북을 한 번에 실행할 수 있는 형태로 구성해드릴게요.
💡 모든 작업을 로컬 머신 또는 원격 서버 모두에서 가능하게 설계했습니다.
✅ 전체 디렉토리 구조 (최소)⚑
ansible-k3s-gitops/
├── inventory/
│ └── hosts.yml
├── playbooks/
│ └── setup.yml
├── roles/
│ ├── k3s/
│ ├── helm/
│ └── argocd/
📄 inventory/hosts.yml (로컬에서 실행할 경우)⚑
all:
hosts:
localhost:
ansible_connection: local
📄 playbooks/setup.yml⚑
- become: sudo 처럼 루트 권한 상승
- roles: 재사용 가능한 작업 묶음
- name: Install k3s + helm + ArgoCD
hosts: localhost
become: true
roles:
- k3s
- helm
- argocd
📄 roles/k3s/tasks/main.yml⚑
- name: Install k3s
shell: curl -sfL https://get.k3s.io | sh -
args:
creates: /usr/local/bin/k3s
- name: Ensure kubeconfig is copied to ~/.kube/config
copy:
src: /etc/rancher/k3s/k3s.yaml
dest: /home/{{ ansible_user_id }}/.kube/config
remote_src: yes
owner: "{{ ansible_user_id }}"
group: "{{ ansible_user_id }}"
mode: '0600'
📄 roles/helm/tasks/main.yml⚑
- name: Install Helm
shell: |
curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
args:
creates: /usr/local/bin/helm
📄 roles/argocd/tasks/main.yml⚑
- name: Create namespace for ArgoCD
kubernetes.core.k8s:
api_version: v1
kind: Namespace
name: argocd
state: present
- name: Apply ArgoCD manifests
shell: |
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
args:
creates: /var/lib/rancher/k3s/server/manifests/argocd-install.yaml
필요 시
kubectl wait
이나port-forward
, admin password 확인도 추가 가능합니다.
▶️ 실행⚑
ansible-playbook -i inventory/hosts.yml playbooks/setup.yml
✅ 설치 후 확인⚑
kubectl get nodes
kubectl get pods -n argocd
helm version
📦 보완 가능 항목⚑
- ArgoCD CLI 설치 및 로그인 자동화
- ArgoCD root application 등록 자동화
k3s uninstall.sh
로 롤백 플레이북 작성- 멀티노드 지원을 위한
group_vars/
,--limit
옵션 구성