FAQs

Frequently Asked Questions


Use Ansible to create a Kubernetes role and role binding:
- name: Create Kubernetes Role
  hosts: localhost
  tasks:
    - name: Create Role
      community.kubernetes.k8s:
        api_version: rbac.authorization.k8s.io/v1
        kind: Role
        name: pod-reader
        namespace: default
        definition:
          rules:
            - apiGroups: [""]
              resources: ["pods"]
              verbs: ["get", "watch", "list"]

    - name: Create RoleBinding
      community.kubernetes.k8s:
        api_version: rbac.authorization.k8s.io/v1
        kind: RoleBinding
        name: pod-reader-binding
        namespace: default
        definition:
          subjects:
            - kind: User
              name: ansible-user
              apiGroup: rbac.authorization.k8s.io
          roleRef:
            kind: Role
            name: pod-reader
            apiGroup: rbac.authorization.k8s.io
- name: Create and mount Docker volume
  hosts: all
  tasks:
    - name: Create a Docker volume
      community.docker.docker_volume:
        name: my_volume

    - name: Run container with volume
      community.docker.docker_container:
        name: app_container
        image: my_app
        volumes:
          - my_volume:/app/data
Example playbook to run an Nginx container:
- name: Run Nginx container
  hosts: all
  tasks:
    - name: Start a Docker container
      community.docker.docker_container:
        name: nginx_server
        image: nginx:latest
        state: started
        ports:
          - "80:80"
Run it with:
ansible-playbook -i inventory.ini deploy_nginx.yml
- name: Create Docker network
  hosts: all
  tasks:
    - name: Create custom network
      community.docker.docker_network:
        name: my_network
        state: present
- name: Deploy Docker Compose Stack
  hosts: all
  tasks:
    - name: Copy docker-compose file
      copy:
        src: ./docker-compose.yml
        dest: /home/user/docker-compose.yml

    - name: Run Docker Compose
      community.docker.docker_compose:
        project_src: /home/user/
Use the k8s module to deploy a pod:
- name: Deploy a Kubernetes pod
  hosts: localhost
  tasks:
    - name: Create a pod
      community.kubernetes.k8s:
        api_version: v1
        kind: Pod
        namespace: default
        name: nginx-pod
        definition:
          metadata:
            labels:
              app: nginx
          spec:
            containers:
              - name: nginx
                image: nginx:latest
- name: Deploy a Kubernetes Service
  hosts: localhost
  tasks:
    - name: Create a Service
      community.kubernetes.k8s:
        api_version: v1
        kind: Service
        name: nginx-service
        namespace: default
        definition:
          metadata:
            labels:
              app: nginx
          spec:
            selector:
              app: nginx
            ports:
              - protocol: TCP
                port: 80
                targetPort: 80
  • Avoid overlapping responsibilities (e.g., don’t let both manage the same config files).
  • Define clear roles (Ansible for provisioning, Puppet for enforcement).
On Linux (Ubuntu/Debian):
sudo apt update && sudo apt install ansible -y
On RHEL/CentOS:
sudo yum install ansible -y
On MacOS:
brew install ansible
On the Jenkins server, install Ansible:
sudo apt install ansible  # Ubuntu/Debian
sudo yum install ansible  # RHEL/CentOS
brew install ansible      # macOS