ansible-collections / community.aws

Ansible Collection for Community AWS
GNU General Public License v3.0
189 stars 398 forks source link

ecs_taskdefinition healthCheck #1565

Closed aschereT closed 1 year ago

aschereT commented 2 years ago

Summary

ecs_taskdefinition.containers accepts healthCheck, which is a dictionary. However, it's not explained what the dictionary looks like, and there's no examples at all.

Issue Type

Documentation Report

Component Name

ecs_taskdefinition

Ansible Version

$ ansible --version
ansible [core 2.13.2]
  config file = None
  configured module search path = ['/home/vagrant/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/local/lib/python3.8/dist-packages/ansible
  ansible collection location = /home/vagrant/.ansible/collections:/usr/share/ansible/collections
  executable location = /usr/local/bin/ansible
  python version = 3.8.10 (default, Jun 22 2022, 20:18:18) [GCC 9.4.0]
  jinja version = 3.1.2
  libyaml = True

Collection Versions

$ ansible-galaxy collection list
# /usr/local/lib/python3.8/dist-packages/ansible_collections
Collection                    Version
----------------------------- -------
amazon.aws                    3.3.1
ansible.netcommon             3.0.1
ansible.posix                 1.4.0
ansible.utils                 2.6.1
ansible.windows               1.10.0
arista.eos                    5.0.1
awx.awx                       21.4.0
azure.azcollection            1.13.0
check_point.mgmt              2.3.0
chocolatey.chocolatey         1.3.0
cisco.aci                     2.2.0
cisco.asa                     3.1.0
cisco.dnac                    6.5.2
cisco.intersight              1.0.19
cisco.ios                     3.2.0
cisco.iosxr                   3.2.0
cisco.ise                     2.5.0
cisco.meraki                  2.10.1
cisco.mso                     2.0.0
cisco.nso                     1.0.3
cisco.nxos                    3.1.0
cisco.ucs                     1.8.0
cloud.common                  2.1.2
cloudscale_ch.cloud           2.2.2
community.aws                 3.4.0
community.azure               1.1.0
community.ciscosmb            1.0.5
community.crypto              2.4.0
community.digitalocean        1.21.0
community.dns                 2.3.0
community.docker              2.7.0
community.fortios             1.0.0
community.general             5.4.0
community.google              1.0.0
community.grafana             1.5.1
community.hashi_vault         3.1.0
community.hrobot              1.5.0
community.libvirt             1.1.0
community.mongodb             1.4.2
community.mysql               3.3.0
community.network             4.0.1
community.okd                 2.2.0
community.postgresql          2.2.0
community.proxysql            1.4.0
community.rabbitmq            1.2.2
community.routeros            2.2.0
community.sap                 1.0.0
community.sap_libs            1.2.0
community.skydive             1.0.0
community.sops                1.2.3
community.vmware              2.7.0
community.windows             1.10.0
community.zabbix              1.7.0
containers.podman             1.9.4
cyberark.conjur               1.1.0
cyberark.pas                  1.0.14
dellemc.enterprise_sonic      1.1.1
dellemc.openmanage            5.5.0
dellemc.os10                  1.1.1
dellemc.os6                   1.0.7
dellemc.os9                   1.0.4
f5networks.f5_modules         1.18.0
fortinet.fortimanager         2.1.5
fortinet.fortios              2.1.6
frr.frr                       2.0.0
gluster.gluster               1.0.2
google.cloud                  1.0.2
hetzner.hcloud                1.8.1
hpe.nimble                    1.1.4
ibm.qradar                    2.0.0
ibm.spectrum_virtualize       1.9.0
infinidat.infinibox           1.3.3
infoblox.nios_modules         1.3.0
inspur.sm                     2.0.0
junipernetworks.junos         3.1.0
kubernetes.core               2.3.2
mellanox.onyx                 1.0.0
netapp.aws                    21.7.0
netapp.azure                  21.10.0
netapp.cloudmanager           21.18.0
netapp.elementsw              21.7.0
netapp.ontap                  21.21.0
netapp.storagegrid            21.10.0
netapp.um_info                21.8.0
netapp_eseries.santricity     1.3.0
netbox.netbox                 3.7.1
ngine_io.cloudstack           2.2.4
ngine_io.exoscale             1.0.0
ngine_io.vultr                1.1.2
openstack.cloud               1.8.0
openvswitch.openvswitch       2.1.0
ovirt.ovirt                   2.2.0
purestorage.flasharray        1.13.0
purestorage.flashblade        1.9.0
purestorage.fusion            1.0.2
sensu.sensu_go                1.13.1
servicenow.servicenow         1.0.6
splunk.es                     2.0.0
t_systems_mms.icinga_director 1.30.1
theforeman.foreman            3.4.0
vmware.vmware_rest            2.2.0
vyos.vyos                     3.0.1
wti.remote                    1.0.4

Configuration

$ ansible-config dump --only-changed

OS / Environment

No response

Additional Information

Clarifies what kind of dictionary the healthCheck parameter expects. Provides an example to help developers implement healthCheck more smoothly.

Code of Conduct

aschereT commented 2 years ago

For example, I tried

healthCheck:
        command: [ "CMD-SHELL", "wget -q -O /dev/null -T 5 http://localhost:3000/ping || exit 1" ]
        startPeriod: 60

but this did not make it into the JSON submitted to ECS.

ansibullbot commented 2 years ago

cc @Java1Guy @alinabuzachis @jillr @markuman @s-hertel @tremble click here for bot help

alinabuzachis commented 1 year ago

@aschereT Thank you for raising this. Would you be willing to open a PR to update the documentation and add an example?

markuman commented 1 year ago

@aschereT It must look like this


    - name: update_taskdefinition
      ecs_taskdefinition:
        family: dplctrl
        state: present
        network_mode: awsvpc
        launch_type: FARGATE
        execution_role_arn: "arn:aws:iam::1234567890:role/ecsTaskExecutionRole"
        task_role_arn: "arn:aws:iam::1234567890:role/dplctrl"
        force_create: true
        region: eu-central-1
        cpu: "256"
        memory: "512"
        containers:
          - name: dplctrl
            memoryReservation: 256
            essential: true
            image: "{{ IMAGE }}"
            secrets:
              - valueFrom: arn:aws:ssm:eu-central-1:1234567890:parameter/test.website.redis_password
                name: REDIS_PASSWORD
            portMappings:
              - containerPort: 8000
                hostPort: 8000
            healthCheck:
              command:
                - CMD-SHELL
                - /app/healthcheck.py
              interval: 60
              retries: 3
              startPeriod: 15
              timeout: 15
            logConfiguration:
              logDriver: awslogs
              options:
                awslogs-group: /deploy.test
                awslogs-region: eu-central-1
                awslogs-stream-prefix: ecs
      register: output
aschereT commented 1 year ago

@aschereT Thank you for raising this. Would you be willing to open a PR to update the documentation and add an example?

I made the issue because I didn't know what the format is in the first place...

@markuman Thanks for an example! This is what I'm looking for!

I also made a PR now that I know what the format looks like. https://github.com/ansible-collections/community.aws/pull/1610