需要帮助解决 ansible 剧本

问题描述 投票:0回答:0

目标是使用 ansible 在 docker 容器下设置 3 个服务。

  1. Apache 服务器 - 配置为接受来自代理服务器的端口 80 上的入站连接的服务器。
  2. Nginx 服务器 - 配置为反向代理,将 http 流量转发到端口 80 上的 Web 服务器
  3. FTP 服务器 - 接受端口 21 上的入站连接 都在 docker 容器下运行。

我的 ansible 剧本运行但是这三个服务似乎并不活跃,即使它们正在运行。我附上了下面的剧本。请忽略#commeneted 的东西,我一直在尝试解决问题。

---
- name: Playbook_main
  hosts: localhost
  become: true
  vars:
    nginx_container_name: nginx-container
    nginx_image_name: jwilder/nginx-proxy:latest
    nginx_container_port: 80
    nginx_host_port: 80
    nginx_server_name: nginx-server
    #nginx_conf_path: /etc/nginx/nginx-apache-docker/nginx.conf
    apache_container_name: apache-container
    apache_image_name: httpd:latest
    apache_container_port: 80
    apache_host_port: 8081
    ftp_container_name: ftp_server
    ftp_container_image: fauria/vsftpd
    ftp_container_port: "21:21"
    ftp_user: admin
    #ftp_password: 12345678
    ftp_directory: /var/ftp
    
  tasks:
  - name: Update
    apt: 
     update_cache: yes
  
  - name: Install Docker
    apt:
     name: docker.io
     state: present

  - name: Install Apache Docker image
    docker_image:
     name: "{{ apache_image_name }}"
     source: pull

  - name: Start Apache container
    docker_container:
      name: "{{ apache_container_name }}"
      image: "{{ apache_image_name }}"
      ports:
        - "{{ apache_host_port }}:{{ apache_container_port }}"
      restart_policy: always

  - name: Verify Apache is running
    wait_for:
      host: localhost
      port: "{{ apache_host_port }}"
      delay: 5
      timeout: 60
      state: started

  - name: Pull NGINX container
    docker_image:
      name: "{{ nginx_image_name }}"
      source: pull

#  - name: Create NGINX conf file for reverse proxy
#    become: yes
#    file:
#      path: "{{ nginx_conf_path }}"
#      state: touch
      
#  - name: Amend NGINX conf file
#    become: yes
#    blockinfile:
#      #path: "{{ nginx_conf_path }}"
#      marker: ""
#      block: |
#         server {
#          listen 80;
#          server_name "{{ nginx_server_name }}";
#
#            location / {
#            proxy_pass http://localhost:"{{ apache_container_port }}";
#            proxy_set_header Host $host;
#            proxy_set_3header X-Real-IP $remote_addr;
#            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

  - name: Start NGINX container
    docker_container:
     name: "{{ nginx_container_name }}"
     image: "{{ nginx_image_name }}"
     ports:
     - "{{ nginx_host_port }}:{{ nginx_container_port }}"
     volumes:
     - "/var/run/docker.sock:/tmp/docker.sock:ro"
     state: present
     
  - name: Create FTP user
    user:
     name: "{{ ftp_user }}"
     password: "{{ '12345678' | password_hash('md5') }}" 
     shell: /bin/bash  
  
  - name: Create FTP directory
    file:
     path: /var/ftp
     state: directory
     owner: "{{ ftp_user }}"
     group: root
     
  - name: FTP server docker container
    docker_container:
      name: "{{ ftp_container_name }}"
      image: "{{ ftp_container_image }}"
      state: started
      published_ports: "{{ ftp_container_port }}"
      restart_policy: always
      env:
        FTP_user: "{{ ftp_user }}"
        FTP_password: "{{ '12345678' | password_hash('md5') }}"

  - name: Configure FTP access
    lineinfile:
      path: /etc/vsftpd.conf
      line: |
        local_enable=YES
        write_enable=YES
        local_umask=022
        chroot_local_user=YES
        allow_writeable_chroot=YES
      state: present
      
#  - name: Configure FTP user access
#    shell: |
#      sudo htpasswd -b -c /etc/vsftpd.conf admin 
#      args:
#      executable: /bin/bash

  - name: Restart FTP server
    docker_container:
      name: "{{ ftp_container_name }}"
      state: started
docker automation ansible yaml docker-container
© www.soinside.com 2019 - 2024. All rights reserved.