Skip to content

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 옵션 구성