Terraform 0.11

docker_service




terraform

docker_service

यह संसाधन डॉकर सेवा के जीवनचक्र का प्रबंधन करता है। डिफ़ॉल्ट रूप से, सेवाओं का निर्माण, अद्यतन और हटाना अलग हो जाते हैं।

Converge कॉन्फ़िग के साथ docker cli का व्यवहार इस बात की गारंटी देने के लिए अनुकरण किया जाता है कि उदाहरण के लिए, किसी सेवा के सभी कार्य चल रहे हैं या सफलतापूर्वक अपडेट किए गए हैं या terraform को सूचित करने के लिए कि कोई सेवा अपडेट नहीं की जा सकी और उसे सफलतापूर्वक रोलआउट कर दिया गया।

उदाहरण उपयोग

निम्नलिखित उदाहरण डॉकर सेवा संसाधन के मूल और उन्नत उपयोग को दिखाते हैं कि मेजबान मशीन पहले से ही एक झुंड का हिस्सा है।

बुनियादी

निम्नलिखित विन्यास एक डॉकियर सेवा शुरू करता है - दी गई छवि के साथ, - 1 प्रतिकृति - मेजबान मशीन के लिए vip मोड में 8080 पोर्ट को उजागर करता है - इसके अलावा, container रनटाइम का उपयोग करता है

resource "docker_service" "foo" {
    name     = "foo-service"
    task_spec {
        container_spec {
            image = "repo.mycompany.com:8080/foo-service:v1"
        }
    }

    endpoint_spec {
      ports {
        target_port = "8080"
      }
    }
}

निम्नलिखित आदेश समतुल्य है:

$ docker service create -d -p 8080 --name foo-service repo.mycompany.com:8080/foo-service:v1

उन्नत

निम्नलिखित कॉन्फ़िगरेशन एक डॉकर सेवा की पूर्ण क्षमताओं को दर्शाता है। वर्तमान में, डॉकर एपीआई 1.32 लागू किया गया है।

resource "docker_volume" "test_volume" {
    name = "tftest-volume"
}

resource "docker_config" "service_config" {
    name = "tftest-full-myconfig"
    data = "ewogICJwcmVmaXgiOiAiMTIzIgp9"
}

resource "docker_secret" "service_secret" {
    name = "tftest-mysecret"
    data = "ewogICJrZXkiOiAiUVdFUlRZIgp9"
}

resource "docker_network" "test_network" {
    name   = "tftest-network"
    driver = "overlay"
}

resource "docker_service" "foo" {
    name = "tftest-service-basic"

    task_spec {
        container_spec {
            image = "repo.mycompany.com:8080/foo-service:v1"

            labels {
                foo = "bar"
            }

            command  = ["ls"]
            args     = ["-las"]
            hostname = "my-fancy-service"

            env {
                MYFOO = "BAR"
            }

            dir    = "/root"
            user   = "root"
            groups = ["docker", "foogroup"]

            privileges {
                se_linux_context {
                    disable = true
                    user    = "user-label"
                    role    = "role-label"
                    type    = "type-label"
                    level   = "level-label"
                }
            }

            read_only = true

            mounts = [
                {
                    target      = "/mount/test"
                    source      = "${docker_volume.test_volume.name}"
                    type        = "volume"
                    read_only   = true

                    bind_options {
                        propagation = "private"
                    }
                },
            ]

            stop_signal       = "SIGTERM"
            stop_grace_period = "10s"

            healthcheck {
                test     = ["CMD", "curl", "-f", "http://localhost:8080/health"]
                interval = "5s"
                timeout  = "2s"
                retries  = 4
            }

            hosts {
                host = "testhost"
                ip   = "10.0.1.0"
            }

            dns_config {
                nameservers = ["8.8.8.8"]
                search      = ["example.org"]
                options     = ["timeout:3"]
            }

            secrets = [
                {
                    secret_id   = "${docker_secret.service_secret.id}"
                    secret_name = "${docker_secret.service_secret.name}"
                    file_name = "/secrets.json"
                },
            ]

            configs = [
                {
                    config_id   = "${docker_config.service_config.id}"
                    config_name = "${docker_config.service_config.name}"
                    file_name = "/configs.json"
                },
            ]
        }

        resources {
            limits {
                nano_cpus    = 1000000
                memory_bytes = 536870912

                generic_resources {
                    named_resources_spec = [
                        "GPU=UUID1"
                    ]

                    discrete_resources_spec = [
                        "SSD=3"
                    ]
                }
            }

            reservation {
                nano_cpus    = 1000000
                memory_bytes = 536870912

                generic_resources {
                    named_resources_spec = [
                        "GPU=UUID1"
                    }

                    discrete_resources_spec = [
                        "SSD=3"
                    ]
                }
            }
        }

        restart_policy {
            condition    = "on-failure"
            delay        = "3s"
            max_attempts = 4
            window       = "10s"
        }

        placement {
            constraints = [
                "node.role==manager",
            ]

            prefs = [
                "spread=node.role.manager",
            ]
        }

        force_update = 0
        runtime      = "container"
        networks     = ["${docker_network.test_network.id}"]

        log_driver {
            name = "json-file"

            options {
                max-size = "10m"
                max-file = "3"
            }
        }
    }

    mode {
        replicated {
            replicas = 2
        }
    }

    update_config {
        parallelism       = 2
        delay             = "10s"
        failure_action    = "pause"
        monitor           = "5s"
        max_failure_ratio = "0.1"
        order             = "start-first"
    }

    rollback_config {
        parallelism       = 2
        delay             = "5ms"
        failure_action    = "pause"
        monitor           = "10h"
        max_failure_ratio = "0.9"
        order             = "stop-first"
    }

    endpoint_spec {
        mode = "vip"

        ports {
            name           = "random"
            protocol       = "tcp"
            target_port    = "8080"
            published_port = "8080"
            publish_mode   = "ingress"
        }
    }
}

संपूर्ण अवलोकन के लिए TestAccDockerService_full परीक्षण या अन्य सभी परीक्षण भी देखें।

तर्क संदर्भ

निम्नलिखित तर्क समर्थित हैं:

  • auth - (वैकल्पिक, ब्लॉक) विवरण के लिए नीचे auth देखें।
  • name - (आवश्यक, स्ट्रिंग) डॉकर सेवा का नाम।
  • task_spec - (आवश्यक, ब्लॉक) विवरण के लिए नीचे TaskSpec देखें।
  • mode - (वैकल्पिक, ब्लॉक) विवरण के लिए नीचे mode देखें।
  • update_config - (वैकल्पिक, ब्लॉक) विवरण के लिए नीचे UpdateConfig देखें।
  • rollback_config - (वैकल्पिक, ब्लॉक) विवरण के लिए नीचे UpdateConfig देखें।
  • endpoint_spec - (वैकल्पिक, ब्लॉक) विवरण के लिए नीचे EndpointSpec देखें।
  • converge_config - (वैकल्पिक, ब्लॉक) विवरणों के लिए नीचे दिए गए कन्वर्ज कॉन्फ़िगरेशन देखें।

प्रमाणीकरण

registry_auth उपयोग registry_auth अतिरिक्त किया जा सकता है। यदि दोनों संपत्तियों को auth जीत दिया जाता है और प्रदाता के अधिकार को अधिलेखित कर दिया जाता है।

  • server_address - (आवश्यक, स्ट्रिंग) रजिस्ट्री सर्वर का पता
  • username - (वैकल्पिक, स्ट्रिंग) रजिस्ट्री को प्रमाणित करने के लिए उपयोग करने वाला उपयोगकर्ता नाम। यदि यह रिक्त है, तो DOCKER_REGISTRY_USER को भी चेक किया जाएगा।
  • password - (वैकल्पिक, स्ट्रिंग) रजिस्ट्री को प्रमाणित करने के लिए उपयोग करने के लिए पासवर्ड। यदि यह रिक्त है, तो DOCKER_REGISTRY_PASS को भी चेक किया जाएगा।

TaskSpec

task_spec कॉन्फ़िगरेशन के भीतर एक ब्लॉक है जिसे सेवा के लिए मोड कॉन्फ़िगरेशन को निर्दिष्ट करने के लिए केवल एक बार दोहराया जा सकता है। task_spec ब्लॉक यूजर task_spec टास्क कॉन्फ़िगरेशन है और निम्नलिखित का समर्थन करता है:

  • container_spec (आवश्यक, ब्लॉक) विवरण के लिए नीचे ContainerSpec देखें।
  • resources (वैकल्पिक, ब्लॉक) विवरण के लिए नीचे resources देखें।
  • restart_policy (वैकल्पिक, ब्लॉक) विवरण के लिए नीचे दी गई पुनरारंभ नीति देखें।
  • placement (वैकल्पिक, ब्लॉक) विवरण के लिए नीचे placement देखें।
  • force_update (वैकल्पिक, int) एक काउंटर जो किसी अद्यतन को ट्रिगर करता है भले ही कोई प्रासंगिक पैरामीटर नहीं बदला गया हो। डॉकर स्पि् ट देखें।
  • runtime (वैकल्पिक, स्ट्रिंग) रनटाइम कार्य निष्पादनकर्ता के लिए निर्दिष्ट रनटाइम का प्रकार है। देखिए डॉकटर रनटाइम
  • networks - (वैकल्पिक, स्ट्रिंग्स का सेट) Ids के नेटवर्क जिसमें कंटेनर को रखा जाएगा।
  • log_driver - (वैकल्पिक, ब्लॉक) विवरण के लिए नीचे लॉग ड्राइवर देखें।

ContainerSpec

container_spec कॉन्फ़िगरेशन के भीतर एक ब्लॉक है जिसे सेवा के लिए मोड कॉन्फ़िगरेशन को निर्दिष्ट करने के लिए केवल एक बार दोहराया जा सकता है। container_spec ब्लॉक प्रत्येक कंटेनर के लिए कल्पना है और निम्नलिखित का समर्थन करता है:

  • image - (आवश्यक, स्ट्रिंग) डोकर सेवा बनाने के लिए उपयोग की जाने वाली छवि।
  • labels - (वैकल्पिक, स्ट्रिंग / स्ट्रिंग कुंजी / मूल्य जोड़े का नक्शा) उपयोगकर्ता द्वारा परिभाषित कुंजी / मूल्य मेटाडेटा।
  • command - (वैकल्पिक, स्ट्रिंग्स की सूची) छवि में चलाया जाने वाला कमांड।
  • args - (वैकल्पिक, स्ट्रिंग्स की सूची) कमांड के लिए तर्क।
  • hostname - (वैकल्पिक, स्ट्रिंग) एक मान्य RFC 1123 hostname के रूप में कंटेनर के लिए उपयोग करने के लिए hostname।
  • env - (वैकल्पिक, स्ट्रिंग / स्ट्रिंग का नक्शा) VAR = मान के रूप में पर्यावरण चर की एक सूची।
  • dir - (वैकल्पिक, स्ट्रिंग) कमांड को चलाने के लिए वर्किंग डायरेक्टरी।
  • user - (वैकल्पिक, स्ट्रिंग) कंटेनर के अंदर का उपयोगकर्ता।
  • groups - (वैकल्पिक, तार की सूची) अतिरिक्त समूहों की एक सूची जो कंटेनर प्रक्रिया के रूप में चलेगी।
  • privileges (वैकल्पिक, ब्लॉक) विवरण के लिए नीचे privileges देखें।
  • read_only - (वैकल्पिक, बूल) केवल पढ़ने के लिए कंटेनर के रूट फाइल सिस्टम को माउंट करें।
  • mounts - (वैकल्पिक, ब्लॉक का सेट) विवरण के लिए नीचे की ओर देखें।
  • stop_signal - (वैकल्पिक, स्ट्रिंग) कंटेनर को रोकने के लिए संकेत।
  • stop_grace_period - (वैकल्पिक, स्ट्रिंग) समय से पहले कंटेनर की प्रतीक्षा करने के लिए बलपूर्वक इसे समाप्त करने से पहले (ms|s|m|h)
  • healthcheck - (वैकल्पिक, ब्लॉक) विवरण के लिए नीचे healthcheck देखें।
  • host - (वैकल्पिक, स्ट्रिंग / स्ट्रिंग का नक्शा) कंटेनर के होस्ट फ़ाइल में जोड़ने के लिए होस्टनाम / आईपी मैपिंग की एक सूची।
    • ip - (आवश्यक स्ट्रिंग) आईपी
    • host - (आवश्यक स्ट्रिंग) होस्टनाम
  • dns_config - (वैकल्पिक, ब्लॉक) विवरण के लिए नीचे DNS विन्यास देखें।
  • secrets - (वैकल्पिक, ब्लॉक का सेट) विवरण के लिए नीचे secrets देखें।
  • configs - (वैकल्पिक, ब्लॉक का सेट) विवरण के लिए नीचे दिए गए configs देखें।
  • isolation - (वैकल्पिक, स्ट्रिंग) सेवा चलाने वाले कंटेनरों की अलगाव तकनीक। (केवल विंडोज)। मान्य मान हैं: default|process|hyperv

विशेषाधिकार

privileges कॉन्फ़िगरेशन के भीतर एक ब्लॉक है जिसे सेवा के लिए मोड कॉन्फ़िगरेशन को निर्दिष्ट करने के लिए केवल एक बार दोहराया जा सकता है। privileges ब्लॉक कंटेनर के लिए सुरक्षा विकल्प रखता है और निम्नलिखित का समर्थन करता है:

  • credential_spec - (वैकल्पिक, ब्लॉक) प्रबंधित सेवा खाते के लिए (केवल विंडोज)
    • file - (वैकल्पिक, स्ट्रिंग) इस फ़ाइल से क्रेडेंशियल युक्ति लोड करें।
    • registry - (वैकल्पिक, स्ट्रिंग) विंडोज रजिस्ट्री में इस मूल्य से क्रेडेंशियल कल्पना लोड करें।
  • se_linux_context - (वैकल्पिक, ब्लॉक) कंटेनर के SELinux लेबल
    • disable - (वैकल्पिक, बूल) अक्षम करें SELinux
    • user - (वैकल्पिक, स्ट्रिंग) SELinux उपयोगकर्ता लेबल
    • role - (वैकल्पिक, स्ट्रिंग) SELinux भूमिका लेबल
    • type - (वैकल्पिक, स्ट्रिंग) SELinux प्रकार लेबल
    • level - (वैकल्पिक, स्ट्रिंग) SELinux स्तर लेबल

माउंट

mount कॉन्फ़िगरेशन के भीतर एक ब्लॉक है जिसे कंटेनर के लिए अतिरिक्त माउंट मैपिंग को निर्दिष्ट करने के लिए दोहराया जा सकता है। प्रत्येक mount ब्लॉक सेवा के हिस्से के रूप में बनाए गए कंटेनरों में जोड़े जाने के लिए विशिष्टता है और निम्नलिखित का समर्थन करता है:

  • target - (आवश्यक, स्ट्रिंग) कंटेनर पथ।
  • source - (आवश्यक, स्ट्रिंग) माउंट स्रोत (उदाहरण के लिए, एक वॉल्यूम नाम, एक होस्ट पथ)
  • type - (आवश्यक, स्ट्रिंग) माउंट प्रकार: मान्य मान bind|volume|tmpfs
  • read_only - (वैकल्पिक, स्ट्रिंग) क्या माउंट को केवल पढ़ा जाना चाहिए
  • bind_options - (वैकल्पिक, नक्शा) bind प्रकार के लिए वैकल्पिक कॉन्फ़िगरेशन।
    • propagation - (वैकल्पिक, स्ट्रिंग) मूल्य के साथ एक प्रचार मोड।
  • volume_options - (वैकल्पिक, नक्शा) volume प्रकार के लिए वैकल्पिक कॉन्फ़िगरेशन।
    • no_copy - (वैकल्पिक, स्ट्रिंग) लक्ष्य से डेटा के साथ वॉल्यूम को पॉप्युलेट करना है या नहीं।
    • labels - (वैकल्पिक, कुंजी / मूल्य जोड़े का नक्शा) लेबल जोड़ना।
    • driver_config - (वैकल्पिक, नक्शा) वॉल्यूम बनाने के लिए ड्राइवर का नाम।
    • name - (वैकल्पिक, स्ट्रिंग) वॉल्यूम बनाने के लिए ड्राइवर का नाम।
    • options - (वैकल्पिक, कुंजी / मूल्य जोड़े का नक्शा) ड्राइवर के लिए विकल्प।
  • tmpf_options - (वैकल्पिक, नक्शा) tmpf प्रकार के लिए वैकल्पिक विन्यास।
    • size_bytes - (वैकल्पिक, int) बाइट्स में tmpfs माउंट के लिए आकार।
    • mode - (वैकल्पिक, int) एक पूर्णांक में tmpfs के लिए अनुमति मोड।

स्वास्थ्य जांच

healthcheck कॉन्फ़िगरेशन के भीतर एक ब्लॉक है जिसे सेवा के कंटेनरों के लिए अतिरिक्त हेल्थकेच कॉन्फ़िगरेशन को निर्दिष्ट करने के लिए केवल एक बार दोहराया जा सकता है। healthcheck block यह जांचने के लिए प्रदर्शन करने के लिए एक परीक्षण है कि कंटेनर स्वस्थ है और निम्नलिखित का समर्थन करता है:

  • test - (आवश्यक, तार की सूची) स्वास्थ्य की जांच करने के लिए चलाने की आज्ञा। उदाहरण के लिए, curl -f http://localhost/health चलाने के लिए कमांड को ["CMD", "curl", "-f", "http://localhost/health"]
  • interval - (वैकल्पिक, स्ट्रिंग) चेक चलाने के बीच का समय (ms|s|m|h) । डिफ़ॉल्ट: 0s
  • timeout - (वैकल्पिक, स्ट्रिंग) एक चेक को चलाने के लिए अधिकतम समय (ms|s|m|h) | डिफ़ॉल्ट: 0s
  • start_period - (वैकल्पिक, स्ट्रिंग) अस्थिर होने की स्थिति में पुनः प्रयास करने से पहले कंटेनर के लिए अवधि प्रारंभ करें (ms|s|m|h) । डिफ़ॉल्ट: 0s
  • start_period - अस्थिर (ms|s|m|h) ओर start_period : प्रयास करने से पहले कंटेनर के लिए प्रारंभ करने की अवधि प्रारंभ करें। डिफ़ॉल्ट: 0s
  • retries - (वैकल्पिक, इंट) लगातार अस्वस्थता की रिपोर्ट करने के लिए आवश्यक विफलताएं। डिफ़ॉल्ट: 0

डीएनएस विन्यास

dns_config कॉन्फ़िगरेशन का एक ब्लॉक है जिसे सेवा के कंटेनरों के लिए अतिरिक्त DNS कॉन्फ़िगरेशन को निर्दिष्ट करने के लिए केवल एक बार दोहराया जा सकता है। dns_config ब्लॉक निम्नलिखित का समर्थन करता है:

  • nameservers - (आवश्यक, स्ट्रिंग्स की सूची) नाम सर्वर के आईपी पते, उदाहरण के लिए, 8.8.8.8
  • search - (वैकल्पिक, तार की सूची) होस्ट-नाम देखने के लिए एक खोज सूची।
  • options - (वैकल्पिक, तार की सूची) आंतरिक रिज़ॉल्वर चर की एक सूची को संशोधित करने के लिए, उदाहरण के लिए, debug , ndots:3

राज

secrets कॉन्फ़िगरेशन के भीतर एक ब्लॉक है जिसे कंटेनर के लिए अतिरिक्त माउंट मैपिंग को निर्दिष्ट करने के लिए दोहराया जा सकता है। प्रत्येक secrets ब्लॉक एक रहस्य का संदर्भ है जिसे सेवा से अवगत कराया जाएगा और निम्नलिखित का समर्थन करेगा:

  • secret_id - (आवश्यक, स्ट्रिंग) configid विशिष्ट रहस्य की आईडी का प्रतिनिधित्व करता है।
  • secret_name - (वैकल्पिक, स्ट्रिंग) उस रहस्य का नाम जो यह संदर्भ देता है, लेकिन आंतरिक रूप से यह सिर्फ देखने / प्रदर्शन उद्देश्यों के लिए प्रदान किया जाता है
  • file_name - (आवश्यक, स्ट्रिंग) फ़ाइल सिस्टम में अंतिम फ़ाइल नाम का प्रतिनिधित्व करता है। विशिष्ट लक्ष्य फ़ाइल जिसे गुप्त डेटा /root/secret/secret.json कंटेनर में लिखा गया है, जैसे /root/secret/secret.json

कॉन्फ़िगरेशन

configs कॉन्फ़िगरेशन के भीतर एक ब्लॉक है जिसे कंटेनर के लिए अतिरिक्त माउंट मैपिंग को निर्दिष्ट करने के लिए दोहराया जा सकता है। प्रत्येक configs एक रहस्य का संदर्भ है जो सेवा के संपर्क में है और निम्नलिखित का समर्थन करता है:

  • config_id - (आवश्यक, स्ट्रिंग) कॉन्फ़िग विशिष्ट विन्यास की आईडी का प्रतिनिधित्व करता है।
  • config_name - (वैकल्पिक, स्ट्रिंग) उस संदर्भ का नाम जो इस संदर्भ को संदर्भित करता है, लेकिन आंतरिक रूप से यह सिर्फ देखने / प्रदर्शन उद्देश्यों के लिए प्रदान किया जाता है
  • file_name - (आवश्यक, स्ट्रिंग) फ़ाइल सिस्टम में अंतिम फ़ाइल नाम का प्रतिनिधित्व करता है। विशिष्ट लक्ष्य फ़ाइल जो कि कॉन्फ़िगर डेटा /root/config/config.json कंटेनर में लिखी जाती है, जैसे /root/config/config.json

साधन

resources कॉन्फ़िगरेशन के भीतर एक ब्लॉक है जिसे सेवा के लिए मोड कॉन्फ़िगरेशन को निर्दिष्ट करने के लिए केवल एक बार दोहराया जा सकता है। resources ब्लॉक आवश्यकताओं का प्रतिनिधित्व करता है जो सेवा के हिस्से के रूप में बनाए गए प्रत्येक कंटेनर पर लागू होता है और निम्नलिखित का समर्थन करता है:

  • limits - (वैकल्पिक, स्ट्रिंग्स की सूची) उन संसाधनों का वर्णन करता है जिन्हें नोड द्वारा विज्ञापित किया जा सकता है और कार्य द्वारा अनुरोध किया जा सकता है।
    • nano_cpus (वैकल्पिक, int) CPU के 1 / 1e9 (या 10 -9) इकाइयों में शेयर करता है। कम से कम 1000000 होना चाहिए
    • memory_bytes (वैकल्पिक, int) बाइट्स में मेमोरी की मात्रा कंटेनर आवंटित करता है
    • generic_resources (वैकल्पिक, मानचित्र) उपयोगकर्ता-परिभाषित संसाधन या तो पूर्णांक संसाधन हो सकते हैं (जैसे, SSD = 3) या स्ट्रिंग संसाधन (जैसे, GPU = UUID1)
    • named_resources_spec (वैकल्पिक, स्ट्रिंग का सेट) स्ट्रिंग संसाधनों, द्वारा सीमांकित =
    • discrete_resources_spec (वैकल्पिक, स्ट्रिंग का सेट) पूर्णांक संसाधन, द्वारा सीमांकित =
  • reservation - (वैकल्पिक, तार की सूची) संसाधनों का वर्णन करने वाली एक वस्तु जो एक नोड द्वारा विज्ञापित की जा सकती है और एक कार्य द्वारा अनुरोध किया जा सकता है।
    • nano_cpus (वैकल्पिक, int) CPU के 1 / 1e9 (या 10 -9) इकाइयों में शेयर करता है। कम से कम 1000000 होना चाहिए
    • memory_bytes (वैकल्पिक, int) बाइट्स में मेमोरी की मात्रा कंटेनर आवंटित करता है
    • generic_resources (वैकल्पिक, मानचित्र) उपयोगकर्ता-परिभाषित संसाधन या तो पूर्णांक संसाधन हो सकते हैं (जैसे, SSD = 3) या स्ट्रिंग संसाधन (जैसे, GPU = UUID1)
    • named_resources_spec (वैकल्पिक, स्ट्रिंग का सेट) स्ट्रिंग संसाधन
    • discrete_resources_spec (वैकल्पिक, स्ट्रिंग का सेट) पूर्णांक संसाधन

रीस्टार्ट पॉलिसी

restart_policy कॉन्फ़िगरेशन के भीतर एक ब्लॉक है जिसे सेवा के लिए मोड कॉन्फ़िगरेशन को निर्दिष्ट करने के लिए केवल एक बार दोहराया जा सकता है। पुनरारंभ_पोलिश ब्लॉक उस पुनरारंभ नीति को निर्दिष्ट करता है जो इस सेवा के हिस्से के रूप में निर्मित कंटेनरों पर लागू होती है और निम्नलिखित का समर्थन करती है:

  • condition (वैकल्पिक, स्ट्रिंग) पुनः आरंभ करने की स्थिति: (none|on-failure|any)
  • delay (वैकल्पिक, स्ट्रिंग) पुनः आरंभ करने के प्रयासों के बीच देरी (ms|s|m|h)
  • max_attempts (वैकल्पिक, स्ट्रिंग) दिए जाने से पहले दिए गए कंटेनर को फिर से शुरू करने का अधिकतम प्रयास (डिफ़ॉल्ट मान 0 , जिसे अनदेखा किया गया है)
  • window (वैकल्पिक, स्ट्रिंग) पुनरारंभ नीति का मूल्यांकन करने के लिए उपयोग की जाने वाली समय विंडो (डिफ़ॉल्ट मान 0 , जो अबाधित है) (ms|s|m|h)

प्लेसमेंट

placement कॉन्फ़िगरेशन के भीतर एक ब्लॉक है जिसे सेवा के लिए मोड कॉन्फ़िगरेशन को निर्दिष्ट करने के लिए केवल एक बार दोहराया जा सकता है। placement ब्लॉक प्लेसमेंट वरीयताओं को निर्दिष्ट करता है और निम्नलिखित का समर्थन करता है:

  • constraints (वैकल्पिक, स्ट्रिंग्स का सेट) बाधाओं की एक सरणी। उदाहरण के लिए: node.role==manager
  • prefs (वैकल्पिक, स्ट्रिंग का सेट) वरीयताएँ शेड्यूलर को टोपोलॉजी जैसे कारकों से अवगत कराने का एक तरीका प्रदान करती हैं। वे उच्चतम से निम्नतम वरीयता के क्रम में प्रदान किए जाते हैं, जैसे: spread=node.role.manager
  • platforms (वैकल्पिक, सेट) प्लेटफ़ॉर्म उन सभी प्लेटफार्मों को संग्रहीत करता है जो सेवा की छवि पर चल सकते हैं
    • architecture (आवश्यक, स्ट्रिंग) वास्तुकला, जैसे, amd64
    • os (आवश्यक, स्ट्रिंग) ऑपरेशन सिस्टम, जैसे, linux

ड्राइवर लॉग करें

log_driver कॉन्फ़िगरेशन के भीतर एक ब्लॉक है जिसे सेवा के कंटेनरों के लिए अतिरिक्त log_driver कॉन्फ़िगरेशन को निर्दिष्ट करने के लिए केवल एक बार दोहराया जा सकता है। log_driver इस युक्ति से निर्मित कार्यों के लिए उपयोग करने के लिए लॉग ड्राइवर को निर्दिष्ट करता है। यदि मौजूद नहीं है, तो झुंड के लिए डिफ़ॉल्ट एक का उपयोग किया जाएगा, अंततः निर्दिष्ट नहीं होने पर इंजन डिफ़ॉल्ट पर वापस गिर जाएगा। ब्लॉक निम्नलिखित का समर्थन करता है:

  • name - (आवश्यक, स्ट्रिंग) उपयोग करने के लिए लॉगिंग ड्राइवर। या तो (none|json-file|syslog|journald|gelf|fluentd|awslogs|splunk|etwlogs|gcplogs) |
  • options - (वैकल्पिक, तार और तार का एक नक्शा) लॉगिंग ड्राइवर के लिए विकल्प, जैसे
options {
  awslogs-region = "us-west-2"
  awslogs-group  = "dev/foo-service"
}

मोड

mode कॉन्फ़िगरेशन के भीतर एक ब्लॉक है जिसे सेवा के लिए मोड कॉन्फ़िगरेशन को निर्दिष्ट करने के लिए केवल एक बार दोहराया जा सकता है। mode ब्लॉक निम्नलिखित का समर्थन करता है:

  • global - (वैकल्पिक, बूल) ने सेवा को वैश्विक मोड में चलाने के लिए true सेट किया है
resource "docker_service" "foo" {
  ...
  mode {
    global = true
  }
  ...
}
  • replicated - (वैकल्पिक, नक्शा), जिसमें केवल replicas की मात्रा होती है
resource "docker_service" "foo" {
  ...
  mode {
    replicated {
      replicas = 2
    }
  }
  ...
}

UpdateConfig और RollbackConfig

update_config या rollback_config कॉन्फ़िगरेशन का एक ब्लॉक है जिसे सेवा के कंटेनरों के लिए अतिरिक्त अपडेट कॉन्फ़िगरेशन को निर्दिष्ट करने के लिए केवल एक बार दोहराया जा सकता है। update_config rollback_config ब्लॉक निम्नलिखित का समर्थन करता है:

  • parallelism - (वैकल्पिक, int) एक साथ एक पुनरावृत्ति में अद्यतन किए जाने वाले कार्यों की अधिकतम संख्या (0 सभी को एक साथ अद्यतन करने के लिए)।
  • delay - (वैकल्पिक, int) अद्यतनों के बीच देरी (ns|us|ms|s|m|h) , जैसे 5s
  • failure_action - (वैकल्पिक, int) अद्यतन विफलता पर कार्रवाई: pause|continue|rollback
  • monitor - (वैकल्पिक, int) विफलता के लिए मॉनिटर करने के लिए प्रत्येक कार्य अद्यतन के बाद अवधि (ns|us|ms|s|m|h)
  • max_failure_ratio - (वैकल्पिक, स्ट्रिंग) float रूप में अपडेट के दौरान सहन करने की विफलता दर। महत्वपूर्ण: आंतरिक कास्टिंग और सटीक त्रुटियों से बचने के लिए float को एक string में float आवश्यकता होती है।
  • order - (वैकल्पिक, int) अद्यतन आदेश या तो 'स्टॉप-फर्स्ट' या 'स्टार्ट-फर्स्ट'।

EndpointSpec

endpoint_spec कॉन्फ़िगरेशन के भीतर एक ब्लॉक है जिसे केवल एक बार उन गुणों को निर्दिष्ट करने के लिए दोहराया जा सकता है जिन्हें किसी सेवा तक पहुंच और लोड करने के लिए कॉन्फ़िगर किया जा सकता है। ब्लॉक निम्नलिखित का समर्थन करता है:

  • mode - (वैकल्पिक, स्ट्रिंग) कार्य के बीच आंतरिक लोड संतुलन के लिए उपयोग करने के लिए रिज़ॉल्यूशन का मोड। (vip|dnsrr) । डिफ़ॉल्ट: vip
  • ports - (वैकल्पिक, ब्लॉक) विवरण के लिए नीचे ports देखें।

बंदरगाहों

ports कॉन्फ़िगरेशन के भीतर एक ब्लॉक है जिसे कंटेनर के पोर्ट मैपिंग को निर्दिष्ट करने के लिए दोहराया जा सकता है। प्रत्येक ports ब्लॉक निम्न का समर्थन करता है:

  • name - (वैकल्पिक, स्ट्रिंग) पोर्ट के लिए एक यादृच्छिक नाम।
  • protocol - (वैकल्पिक, स्ट्रिंग) प्रोटोकॉल जो इस पोर्ट पर उपयोग किया जा सकता है: tcp|udp|sctp | डिफ़ॉल्ट: tcp
  • target_port - (आवश्यक, int) कंटेनर के अंदर पोर्ट।
  • published_port - (आवश्यक, int) झुंड होस्ट पर पोर्ट। यदि निर्धारित नहीं है तो target_port का मान उपयोग किया जाएगा।
  • publish_mode - (वैकल्पिक, स्ट्रिंग) उस मोड का प्रतिनिधित्व करता है जिसमें पोर्ट प्रकाशित किया जाना है: ingress|host

कॉन्फ़िगर कॉन्फ़िगर करें

converge_config कॉन्फ़िगरेशन के भीतर एक ब्लॉक है जिसे सेवा के कंटेनरों के लिए अतिरिक्त कन्वर्जिंग कॉन्फ़िगरेशन को निर्दिष्ट करने के लिए केवल एक बार दोहराया जा सकता है। यह docker cli के समान व्यवहार है। इस कॉन्फ़िगरेशन को जोड़कर, दिए गए अंतराल के साथ निगरानी की जाती है, जैसे, किसी सेवा के सभी कार्य / प्रतिकृतियां स्वस्थ और स्वस्थ हैं

converge_config ब्लॉक निम्नलिखित का समर्थन करता है:

  • delay - (वैकल्पिक, स्ट्रिंग) डॉक एंडपॉइंट की जांच करने के लिए प्रत्येक चेक के बीच का समय (ms|s|m|h) । उदाहरण के लिए, यह जांचने के लिए कि क्या सेवा के निर्माण के समय सभी कार्य समाप्त हो गए हैं, या यह जांचने के लिए कि सभी कार्य सफलतापूर्वक अपडेट किए गए हैं या नहीं। डिफ़ॉल्ट: 7s
  • timeout - (वैकल्पिक, स्ट्रिंग) वांछित राज्य तक पहुंचने के लिए सेवा का समय समाप्त। डिफ़ॉल्ट: 3m

संदर्भ संदर्भित करता है

उपरोक्त विन्यास के अतिरिक्त निम्नलिखित विशेषताएँ निर्यात की जाती हैं:

  • id (स्ट्रिंग)