asson
This commit is contained in:
		
							
								
								
									
										8
									
								
								Playbooks/Docker-Portainer/inventory.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								Playbooks/Docker-Portainer/inventory.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
---
 | 
			
		||||
docker:
 | 
			
		||||
  hosts:
 | 
			
		||||
    docker01:
 | 
			
		||||
      ansible_host: 192.168.200.222
 | 
			
		||||
      ansible_user: 'ubuntu'
 | 
			
		||||
      ansible_become: true
 | 
			
		||||
      ansible_become_method: sudo
 | 
			
		||||
							
								
								
									
										7
									
								
								Playbooks/Docker-Portainer/playbook.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								Playbooks/Docker-Portainer/playbook.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
---
 | 
			
		||||
- name: Install Docker on Ubuntu
 | 
			
		||||
  hosts: all
 | 
			
		||||
  become: true
 | 
			
		||||
  roles:
 | 
			
		||||
    - docker_install
 | 
			
		||||
    - portainer_deploy
 | 
			
		||||
@@ -0,0 +1,5 @@
 | 
			
		||||
---
 | 
			
		||||
- name: Restart Docker
 | 
			
		||||
  ansible.builtin.systemd:
 | 
			
		||||
    name: docker
 | 
			
		||||
    state: restarted
 | 
			
		||||
@@ -0,0 +1,41 @@
 | 
			
		||||
---
 | 
			
		||||
- name: Ensure apt is using HTTPS
 | 
			
		||||
  ansible.builtin.apt:
 | 
			
		||||
    name: "{{ item }}"
 | 
			
		||||
    state: present
 | 
			
		||||
  loop:
 | 
			
		||||
    - apt-transport-https
 | 
			
		||||
    - ca-certificates
 | 
			
		||||
    - curl
 | 
			
		||||
    - software-properties-common
 | 
			
		||||
 | 
			
		||||
- name: Add Docker GPG key
 | 
			
		||||
  ansible.builtin.apt_key:
 | 
			
		||||
    url: "https://download.docker.com/linux/ubuntu/gpg"
 | 
			
		||||
    state: present
 | 
			
		||||
 | 
			
		||||
- name: Add Docker repository
 | 
			
		||||
  ansible.builtin.apt_repository:
 | 
			
		||||
    repo: "{{ docker_apt_repository }}"
 | 
			
		||||
    state: present
 | 
			
		||||
 | 
			
		||||
- name: Install Docker CE
 | 
			
		||||
  ansible.builtin.apt:
 | 
			
		||||
    name: docker-ce
 | 
			
		||||
    state: present
 | 
			
		||||
    update_cache: true
 | 
			
		||||
 | 
			
		||||
- name: Configure Docker daemon options
 | 
			
		||||
  ansible.builtin.template:
 | 
			
		||||
    src: "templates/docker_daemon.json.j2"
 | 
			
		||||
    dest: "/etc/docker/daemon.json"
 | 
			
		||||
    owner: 'root'
 | 
			
		||||
    group: 'root'
 | 
			
		||||
    mode: '0755'  # Optional file permissions
 | 
			
		||||
  notify: Restart Docker
 | 
			
		||||
 | 
			
		||||
- name: Ensure Docker service is enabled and running
 | 
			
		||||
  ansible.builtin.systemd:
 | 
			
		||||
    name: docker
 | 
			
		||||
    enabled: true
 | 
			
		||||
    state: started
 | 
			
		||||
@@ -0,0 +1,3 @@
 | 
			
		||||
{
 | 
			
		||||
    "storage-driver": "{{ docker_daemon_options['storage-driver'] }}"
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,5 @@
 | 
			
		||||
---
 | 
			
		||||
docker_apt_release_channel: "stable"
 | 
			
		||||
docker_apt_repository: "deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable"
 | 
			
		||||
docker_daemon_options:
 | 
			
		||||
  storage-driver: "overlay2"
 | 
			
		||||
@@ -0,0 +1,6 @@
 | 
			
		||||
---
 | 
			
		||||
- name: Start Portainer
 | 
			
		||||
  community.docker.docker_compose:
 | 
			
		||||
    project_src: /home/ubuntu/docker-compose/portainer
 | 
			
		||||
    state: present
 | 
			
		||||
    restarted: true
 | 
			
		||||
@@ -0,0 +1,34 @@
 | 
			
		||||
---
 | 
			
		||||
- name: Ensure docker-compose is installed
 | 
			
		||||
  ansible.builtin.package:
 | 
			
		||||
    name: docker-compose
 | 
			
		||||
    state: present
 | 
			
		||||
 | 
			
		||||
- name: Ensure Docker service is running
 | 
			
		||||
  ansible.builtin.service:
 | 
			
		||||
    name: docker
 | 
			
		||||
    state: started
 | 
			
		||||
    enabled: true
 | 
			
		||||
 | 
			
		||||
- name: Setup Portainer directory
 | 
			
		||||
  ansible.builtin.file:
 | 
			
		||||
    path: /home/ubuntu/docker-compose/portainer
 | 
			
		||||
    state: directory
 | 
			
		||||
    mode: '0755'  # Optional file permissions
 | 
			
		||||
    owner: ubuntu  # Optional ownership
 | 
			
		||||
    group: ubuntu  # Optional group ownership
 | 
			
		||||
 | 
			
		||||
- name: Deploy Portainer using Docker Compose
 | 
			
		||||
  ansible.builtin.template:
 | 
			
		||||
    src: "templates/docker_compose.yaml.j2"
 | 
			
		||||
    dest: "/home/ubuntu/docker-compose/portainer/docker-compose.yaml"
 | 
			
		||||
    mode: '0755'  # Optional file permissions
 | 
			
		||||
    owner: ubuntu  # Optional ownership
 | 
			
		||||
    group: ubuntu  # Optional group ownership
 | 
			
		||||
  notify:
 | 
			
		||||
    - Start Portainer
 | 
			
		||||
 | 
			
		||||
- name: Run Portainer docker-compose up
 | 
			
		||||
  community.docker.docker_compose:
 | 
			
		||||
    project_src: /home/ubuntu/docker-compose/portainer
 | 
			
		||||
    state: present
 | 
			
		||||
@@ -0,0 +1,13 @@
 | 
			
		||||
version: '3.3'
 | 
			
		||||
services:
 | 
			
		||||
  portainer:
 | 
			
		||||
    image: portainer/portainer-ce:{{ portainer_version }}
 | 
			
		||||
    volumes:
 | 
			
		||||
      - /var/run/docker.sock:/var/run/docker.sock
 | 
			
		||||
      - portainer_data:/data
 | 
			
		||||
    ports:
 | 
			
		||||
      - "9000:9000"
 | 
			
		||||
    restart: always
 | 
			
		||||
 | 
			
		||||
volumes:
 | 
			
		||||
  portainer_data:
 | 
			
		||||
@@ -0,0 +1,2 @@
 | 
			
		||||
---
 | 
			
		||||
portainer_version: "latest"
 | 
			
		||||
							
								
								
									
										52
									
								
								Playbooks/File-Copy/File-Copy-Playbook.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										52
									
								
								Playbooks/File-Copy/File-Copy-Playbook.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,52 @@
 | 
			
		||||
---
 | 
			
		||||
- name: Deploy Docker Container with Docker Compose
 | 
			
		||||
  hosts: all
 | 
			
		||||
  become: true
 | 
			
		||||
  tasks:
 | 
			
		||||
    - name: Ensure Docker is installed
 | 
			
		||||
      ansible.builtin.package:
 | 
			
		||||
        name: docker
 | 
			
		||||
        state: present
 | 
			
		||||
 | 
			
		||||
    - name: Ensure Docker service is running
 | 
			
		||||
      ansible.builtin.service:
 | 
			
		||||
        name: docker
 | 
			
		||||
        state: started
 | 
			
		||||
        enabled: true
 | 
			
		||||
 | 
			
		||||
    - name: Create a directory for Docker Compose files
 | 
			
		||||
      ansible.builtin.file:
 | 
			
		||||
        path: /home/ubuntu/ansible-docker/docker-compose
 | 
			
		||||
        state: directory
 | 
			
		||||
        mode: '0755'  # Optional file permissions
 | 
			
		||||
        owner: ubuntu  # Optional ownership
 | 
			
		||||
        group: ubuntu  # Optional group ownership
 | 
			
		||||
 | 
			
		||||
    - name: Create a directory for Nginx website files
 | 
			
		||||
      ansible.builtin.file:
 | 
			
		||||
        path: /home/ubuntu/docker/nginx/web
 | 
			
		||||
        state: directory
 | 
			
		||||
        mode: '0755'  # Optional file permissions
 | 
			
		||||
        owner: ubuntu  # Optional ownership
 | 
			
		||||
        group: ubuntu  # Optional group ownership
 | 
			
		||||
 | 
			
		||||
    - name: Copy docker-compose to remote host
 | 
			
		||||
      ansible.builtin.copy:
 | 
			
		||||
        src: /home/ubuntu/nginx/docker-compose.yaml
 | 
			
		||||
        dest: /home/ubuntu/ansible-docker/docker-compose/docker-compose.yaml
 | 
			
		||||
        mode: '0755'  # Optional file permissions
 | 
			
		||||
        owner: ubuntu  # Optional ownership
 | 
			
		||||
        group: ubuntu  # Optional group ownership
 | 
			
		||||
 | 
			
		||||
    - name: Copy Nginx website folder to remote host # copies a folder - note no file extension
 | 
			
		||||
      ansible.builtin.copy:
 | 
			
		||||
        src: /home/ubuntu/nginx/website
 | 
			
		||||
        dest: /home/ubuntu/docker/nginx/web
 | 
			
		||||
        mode: '0755'  # Optional file permissions
 | 
			
		||||
        owner: ubuntu  # Optional ownership
 | 
			
		||||
        group: ubuntu  # Optional group ownership
 | 
			
		||||
 | 
			
		||||
    - name: Start Docker Compose
 | 
			
		||||
      community.docker.docker_compose:
 | 
			
		||||
        project_src: /home/ubuntu/ansible-docker/docker-compose
 | 
			
		||||
        state: present
 | 
			
		||||
							
								
								
									
										24
									
								
								Playbooks/File-Copy/File-Copy-Undo-Playbook.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								Playbooks/File-Copy/File-Copy-Undo-Playbook.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,24 @@
 | 
			
		||||
---
 | 
			
		||||
- name: Undo Docker Compose Deployment
 | 
			
		||||
  hosts: all
 | 
			
		||||
  become: true
 | 
			
		||||
  tasks:
 | 
			
		||||
    - name: Stop Docker Container
 | 
			
		||||
      community.docker.docker_compose:
 | 
			
		||||
        project_src: /home/ubuntu/ansible-docker/docker-compose
 | 
			
		||||
        state: absent
 | 
			
		||||
 | 
			
		||||
    - name: Remove Docker Compose file
 | 
			
		||||
      ansible.builtin.file:
 | 
			
		||||
        path: /home/ubuntu/ansible-docker/docker-compose/docker-compose.yml
 | 
			
		||||
        state: absent
 | 
			
		||||
 | 
			
		||||
    - name: Remove Docker Compose directory
 | 
			
		||||
      ansible.builtin.file:
 | 
			
		||||
        path: /home/ubuntu/ansible-docker
 | 
			
		||||
        state: absent
 | 
			
		||||
 | 
			
		||||
    - name: Remove Website directory
 | 
			
		||||
      ansible.builtin.file:
 | 
			
		||||
        path: /home/ubuntu/docker/nginx/web
 | 
			
		||||
        state: absent
 | 
			
		||||
							
								
								
									
										8
									
								
								Playbooks/File-Copy/inventory.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										8
									
								
								Playbooks/File-Copy/inventory.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,8 @@
 | 
			
		||||
---
 | 
			
		||||
docker:
 | 
			
		||||
  hosts:
 | 
			
		||||
    docker01:
 | 
			
		||||
      ansible_host: 192.168.200.50
 | 
			
		||||
      ansible_user: 'ubuntu'
 | 
			
		||||
      ansible_become: true
 | 
			
		||||
      ansible_become_method: sudo
 | 
			
		||||
							
								
								
									
										31
									
								
								Playbooks/File-Copy/nginx/docker-compose.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										31
									
								
								Playbooks/File-Copy/nginx/docker-compose.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,31 @@
 | 
			
		||||
version: "3.9"
 | 
			
		||||
services:
 | 
			
		||||
  web:
 | 
			
		||||
    image: nginx
 | 
			
		||||
    container_name: jimsgarage
 | 
			
		||||
    volumes:
 | 
			
		||||
     - /home/ubuntu/docker/nginx/templates:/etc/nginx/templates
 | 
			
		||||
     - /home/ubuntu/docker/nginx/web/website:/usr/share/nginx/html
 | 
			
		||||
    environment:
 | 
			
		||||
     - NGINX_HOST=nginx.jimsgarage.co.uk
 | 
			
		||||
     - NGINX_PORT=80
 | 
			
		||||
    labels:
 | 
			
		||||
      - "traefik.enable=true"
 | 
			
		||||
      - "traefik.http.routers.nginx.entrypoints=http"
 | 
			
		||||
      - "traefik.http.routers.nginx.rule=Host(`nginx.jimsgarage.co.uk`)"
 | 
			
		||||
      - "traefik.http.middlewares.nginx-https-redirect.redirectscheme.scheme=https"
 | 
			
		||||
      - "traefik.http.routers.nginx.middlewares=nginx-https-redirect"
 | 
			
		||||
      - "traefik.http.routers.nginx-secure.entrypoints=https"
 | 
			
		||||
      - "traefik.http.routers.nginx-secure.rule=Host(`nginx.jimsgarage.co.uk`)"
 | 
			
		||||
      - "traefik.http.routers.nginx-secure.tls=true"
 | 
			
		||||
      - "traefik.http.routers.nginx-secure.service=nginx"
 | 
			
		||||
      - "traefik.http.services.nginx.loadbalancer.server.port=80"
 | 
			
		||||
      - "traefik.docker.network=proxy"
 | 
			
		||||
    networks:
 | 
			
		||||
      proxy:
 | 
			
		||||
    security_opt:
 | 
			
		||||
      - no-new-privileges:true
 | 
			
		||||
 | 
			
		||||
networks:
 | 
			
		||||
  proxy:
 | 
			
		||||
    external: true
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								Playbooks/File-Copy/nginx/website/Jims-Garage-1.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								Playbooks/File-Copy/nginx/website/Jims-Garage-1.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 148 KiB  | 
							
								
								
									
										108
									
								
								Playbooks/File-Copy/nginx/website/index.html
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								Playbooks/File-Copy/nginx/website/index.html
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,108 @@
 | 
			
		||||
<!DOCTYPE html>
 | 
			
		||||
<html lang="en">
 | 
			
		||||
<head>
 | 
			
		||||
  <meta charset="UTF-8">
 | 
			
		||||
  <title>Jim's Garage Ansible Demo</title>
 | 
			
		||||
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
 | 
			
		||||
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
 | 
			
		||||
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
 | 
			
		||||
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
 | 
			
		||||
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
 | 
			
		||||
  <style>
 | 
			
		||||
    .hero {
 | 
			
		||||
      background: url(Jims-Garage-1.png) no-repeat center center;
 | 
			
		||||
      background-size: cover;
 | 
			
		||||
      height: 400px;
 | 
			
		||||
      display: flex;
 | 
			
		||||
      align-items: center;
 | 
			
		||||
      justify-content: center;
 | 
			
		||||
      color: white;
 | 
			
		||||
      text-shadow: 2px 2px 5px rgba(0, 0, 0, 0.7);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    .features {
 | 
			
		||||
      margin-top: 50px;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    .feature {
 | 
			
		||||
      padding: 20px;
 | 
			
		||||
      transition: transform 0.3s ease;
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    .feature:hover {
 | 
			
		||||
      transform: scale(1.05);
 | 
			
		||||
    }
 | 
			
		||||
    
 | 
			
		||||
    .footer {
 | 
			
		||||
      background-color: #333;
 | 
			
		||||
      color: white;
 | 
			
		||||
      text-align: center;
 | 
			
		||||
      padding: 20px;
 | 
			
		||||
      position: fixed;
 | 
			
		||||
      width: 100%;
 | 
			
		||||
      bottom: 0;
 | 
			
		||||
    }
 | 
			
		||||
  </style>
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
  <!-- Navigation Bar -->
 | 
			
		||||
  <nav class="navbar navbar-expand-lg navbar-dark bg-dark">
 | 
			
		||||
    <a class="navbar-brand" href="#">My Webpage</a>
 | 
			
		||||
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
 | 
			
		||||
      <span class="navbar-toggler-icon"></span>
 | 
			
		||||
    </button>
 | 
			
		||||
    <div class="collapse navbar-collapse" id="navbarNav">
 | 
			
		||||
      <ul class="navbar-nav ml-auto">
 | 
			
		||||
        <li class="nav-item">
 | 
			
		||||
          <a class="nav-link" href="#home">Home</a>
 | 
			
		||||
        </li>
 | 
			
		||||
        <li class="nav-item">
 | 
			
		||||
          <a class="nav-link" href="#features">Features</a>
 | 
			
		||||
        </li>
 | 
			
		||||
        <li class="nav-item">
 | 
			
		||||
          <a class="nav-link" href="#contact">Contact</a>
 | 
			
		||||
        </li>
 | 
			
		||||
      </ul>
 | 
			
		||||
    </div>
 | 
			
		||||
  </nav>
 | 
			
		||||
 | 
			
		||||
  <!-- Hero Section -->
 | 
			
		||||
  <div class="hero" id="home">
 | 
			
		||||
    <h1>Welcome to Jim's Garage Ansible Demo</h1>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
  <!-- Features Section -->
 | 
			
		||||
  <div class="container features" id="features">
 | 
			
		||||
    <h2>Our Features</h2>
 | 
			
		||||
    <div class="row">
 | 
			
		||||
      <div class="col-md-4">
 | 
			
		||||
        <div class="feature">
 | 
			
		||||
          <i class="fas fa-cogs fa-3x"></i>
 | 
			
		||||
          <h4>Feature 1</h4>
 | 
			
		||||
          <p>Dynamic and interactive elements.</p>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="col-md-4">
 | 
			
		||||
        <div class="feature">
 | 
			
		||||
          <i class="fas fa-bolt fa-3x"></i>
 | 
			
		||||
          <h4>Feature 2</h4>
 | 
			
		||||
          <p>Responsive design and transitions.</p>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
      <div class="col-md-4">
 | 
			
		||||
        <div class="feature">
 | 
			
		||||
          <i class="fas fa-heart fa-3x"></i>
 | 
			
		||||
          <h4>Feature 3</h4>
 | 
			
		||||
          <p>Engaging user experiences.</p>
 | 
			
		||||
        </div>
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
  </div>
 | 
			
		||||
 | 
			
		||||
  <!-- Footer Section -->
 | 
			
		||||
  <div class="footer">
 | 
			
		||||
    <p>© 2024 My Webpage. All rights reserved.</p>
 | 
			
		||||
  </div>
 | 
			
		||||
</body>
 | 
			
		||||
</html>
 | 
			
		||||
							
								
								
									
										57
									
								
								Playbooks/Multi-OS-Update/Update-Playbook.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										57
									
								
								Playbooks/Multi-OS-Update/Update-Playbook.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,57 @@
 | 
			
		||||
---
 | 
			
		||||
- name: Update Windows, Arch Linux, and Ubuntu
 | 
			
		||||
  hosts: all
 | 
			
		||||
  tasks:
 | 
			
		||||
    - name: Gather facts
 | 
			
		||||
      ansible.builtin.setup:
 | 
			
		||||
 | 
			
		||||
    - name: Update Windows
 | 
			
		||||
      when: ansible_facts['os_family'] == 'Windows'
 | 
			
		||||
      ansible.windows.win_updates:
 | 
			
		||||
        category_names:
 | 
			
		||||
          - SecurityUpdates
 | 
			
		||||
          - UpdateRollups
 | 
			
		||||
          - CriticalUpdates
 | 
			
		||||
        state: installed
 | 
			
		||||
      register: win_update_result
 | 
			
		||||
 | 
			
		||||
    - name: Check if Windows requires a reboot
 | 
			
		||||
      when: win_update_result.changed and win_update_result.reboot_required | default(false)
 | 
			
		||||
      ansible.windows.win_reboot:
 | 
			
		||||
        reboot_timeout: 600
 | 
			
		||||
      register: win_reboot_result
 | 
			
		||||
 | 
			
		||||
    - name: Update Arch Linux
 | 
			
		||||
      when: ansible_facts['os_family'] == 'Arch'
 | 
			
		||||
      community.general.pacman:
 | 
			
		||||
        update_cache: true
 | 
			
		||||
        upgrade: true
 | 
			
		||||
      register: arch_update_result
 | 
			
		||||
 | 
			
		||||
    - name: Check if Arch Linux requires a reboot
 | 
			
		||||
      when: ansible_facts['os_family'] == 'Arch' and arch_update_result.changed
 | 
			
		||||
      ansible.builtin.stat:
 | 
			
		||||
        path: /run/reboot-required
 | 
			
		||||
      register: arch_reboot_required
 | 
			
		||||
 | 
			
		||||
    - name: Reboot Arch Linux if required
 | 
			
		||||
      when: arch_reboot_required.stat.exists | default(false)
 | 
			
		||||
      ansible.builtin.reboot:
 | 
			
		||||
        reboot_timeout: 600
 | 
			
		||||
 | 
			
		||||
    - name: Update Ubuntu
 | 
			
		||||
      when: ansible_facts['os_family'] == 'Debian'
 | 
			
		||||
      ansible.builtin.apt:
 | 
			
		||||
        upgrade: dist
 | 
			
		||||
        update_cache: true
 | 
			
		||||
 | 
			
		||||
    - name: Check if a reboot is required on Ubuntu
 | 
			
		||||
      when: ansible_facts['os_family'] == 'Debian'
 | 
			
		||||
      ansible.builtin.stat:
 | 
			
		||||
        path: /var/run/reboot-required
 | 
			
		||||
      register: ubuntu_reboot_required
 | 
			
		||||
 | 
			
		||||
    - name: Reboot Ubuntu if required
 | 
			
		||||
      when: ubuntu_reboot_required.stat.exists | default(false)
 | 
			
		||||
      ansible.builtin.reboot:
 | 
			
		||||
        reboot_timeout: 600
 | 
			
		||||
							
								
								
									
										14
									
								
								Playbooks/Multi-OS-Update/inventory.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								Playbooks/Multi-OS-Update/inventory.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
arch:
 | 
			
		||||
  hosts:
 | 
			
		||||
    arch01:
 | 
			
		||||
      ansible_host: 192.168.200.214
 | 
			
		||||
      ansible_user: 'root'
 | 
			
		||||
      ansible_python_interpreter: /usr/bin/python3
 | 
			
		||||
 | 
			
		||||
docker:
 | 
			
		||||
  hosts:
 | 
			
		||||
    docker01:
 | 
			
		||||
      ansible_host: 192.168.200.50
 | 
			
		||||
      ansible_user: 'ubuntu'
 | 
			
		||||
      ansible_become: true
 | 
			
		||||
      ansible_become_method: sudo
 | 
			
		||||
							
								
								
									
										67
									
								
								Playbooks/Secrets-Variables/File-Copy-Playbook.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										67
									
								
								Playbooks/Secrets-Variables/File-Copy-Playbook.yaml
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,67 @@
 | 
			
		||||
---
 | 
			
		||||
- name: Deploy Docker Container with Docker Compose
 | 
			
		||||
  hosts: all
 | 
			
		||||
  become: true
 | 
			
		||||
  tasks:
 | 
			
		||||
    - name: Include variables file
 | 
			
		||||
      ansible.builtin.include_vars: myvars.yaml
 | 
			
		||||
 | 
			
		||||
    - name: Ensure Docker is installed
 | 
			
		||||
      ansible.builtin.package:
 | 
			
		||||
        name: docker
 | 
			
		||||
        state: present
 | 
			
		||||
 | 
			
		||||
    - name: Ensure Docker service is running
 | 
			
		||||
      ansible.builtin.service:
 | 
			
		||||
        name: docker
 | 
			
		||||
        state: started
 | 
			
		||||
        enabled: true
 | 
			
		||||
 | 
			
		||||
    - name: Create a directory for Docker Compose files
 | 
			
		||||
      ansible.builtin.file:
 | 
			
		||||
        path: /home/ubuntu/ansible-docker/docker-compose
 | 
			
		||||
        state: directory
 | 
			
		||||
        mode: '0755'  # Optional file permissions
 | 
			
		||||
        owner: ubuntu  # Optional ownership
 | 
			
		||||
        group: ubuntu  # Optional group ownership
 | 
			
		||||
 | 
			
		||||
    - name: Create a directory for Nginx website files
 | 
			
		||||
      ansible.builtin.file:
 | 
			
		||||
        path: /home/ubuntu/docker/nginx/web
 | 
			
		||||
        state: directory
 | 
			
		||||
        mode: '0755'  # Optional file permissions
 | 
			
		||||
        owner: ubuntu  # Optional ownership
 | 
			
		||||
        group: ubuntu  # Optional group ownership
 | 
			
		||||
 | 
			
		||||
    - name: Copy docker-compose to remote host
 | 
			
		||||
      ansible.builtin.copy:
 | 
			
		||||
        src: /home/ubuntu/nginx/docker-compose.yaml
 | 
			
		||||
        dest: /home/ubuntu/ansible-docker/docker-compose/docker-compose.yaml
 | 
			
		||||
        mode: '0755'  # Optional file permissions
 | 
			
		||||
        owner: ubuntu  # Optional ownership
 | 
			
		||||
        group: ubuntu  # Optional group ownership
 | 
			
		||||
 | 
			
		||||
    - name: Copy Nginx website folder to remote host # copies a folder - note no file extension
 | 
			
		||||
      ansible.builtin.copy:
 | 
			
		||||
        src: /home/ubuntu/nginx/website
 | 
			
		||||
        dest: /home/ubuntu/docker/nginx/web
 | 
			
		||||
        mode: '0755'  # Optional file permissions
 | 
			
		||||
        owner: ubuntu  # Optional ownership
 | 
			
		||||
        group: ubuntu  # Optional group ownership
 | 
			
		||||
 | 
			
		||||
    - name: Replace old name with new name (requires Ansible >= 2.4)
 | 
			
		||||
      ansible.builtin.replace:
 | 
			
		||||
        path: /home/ubuntu/docker/nginx/web/website/index.html
 | 
			
		||||
        regexp: "Jim's Garage"
 | 
			
		||||
        replace: "{{ website_name }}"
 | 
			
		||||
 | 
			
		||||
    - name: Access and print secret
 | 
			
		||||
      ansible.builtin.replace:
 | 
			
		||||
        path: /home/ubuntu/docker/nginx/web/website/index.html
 | 
			
		||||
        regexp: "Our Features"
 | 
			
		||||
        replace: "{{ api_key }}"
 | 
			
		||||
 | 
			
		||||
    - name: Start Docker Compose
 | 
			
		||||
      community.docker.docker_compose:
 | 
			
		||||
        project_src: /home/ubuntu/ansible-docker/docker-compose
 | 
			
		||||
        state: present
 | 
			
		||||
							
								
								
									
										1
									
								
								Playbooks/Secrets-Variables/password
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								Playbooks/Secrets-Variables/password
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
password
 | 
			
		||||
							
								
								
									
										1
									
								
								Playbooks/Secrets-Variables/secrets_file.enc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								Playbooks/Secrets-Variables/secrets_file.enc
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
api_key: SuperSecretPassword
 | 
			
		||||
		Reference in New Issue
	
	Block a user