Bagaimana cara meminta keadaan garam yang dibuat secara dinamis dari dalam satu lingkaran yang juga secara dinamis membuat keadaan garam?

Inilah yang ingin saya capai.

Saya memiliki status garam yang mengelola pengguna dan grup di linux, templat/etc/skel, dan nantinya akan mengelola banyak templat terkait pengguna lainnya.

Pendeknya:

Beberapa negara bagian dibuat dari membaca pilar dengan pengguna dan properti dalam perulangan for.

Beberapa negara bagian diciptakan dari membaca pilar dengan kelompok dan properti.

Akan ada grup yang merupakan grup utama bagi pengguna, tidak semua grup akan memiliki pengguna utama, dan semua pengguna yang dibuat akan memiliki grup utama yang dibuat dengan nama pengguna tersebut. Tampaknya grup tersebut harus dibuat dengan garam sebelum membuat pengguna. Jadi, untuk setiap status pengguna, di mana status dibuat oleh loop, dan pengguna dibuat oleh status tersebut, perlu memerlukan grup yang sesuai. Namun negara-negara kelompok tidak ada secara statis, mereka juga diciptakan secara dinamis dari pilar kelompok. Jadi, salt tidak serta merta membuat setiap negara bagian dalam urutan yang sama setiap kali melakukan pengurutan berdasarkan abjad, tetapi urutannya ditentukan setelah semua persyaratan diselesaikan. (BTW. Saya mencoba untuk membuat ringkasan semacam ini tetap singkat dan tidak membahas masalah render garam di sini.)

Saya rasa masalah yang saya alami adalah status grup belum dibuat pada saat status pengguna dibuat.

Saya telah memposting di bawah status dengan konfigurasi yang memerlukan yang menghasilkan kesalahan. Ketika persyaratan ada, maka tidak membuat pengguna tetapi membuat grup, ketika persyaratan dihapus, maka dibuatkan grup dan pengguna.

Jika saya menghapus baris persyaratan, saat ini saya mendapatkan hasil yang diharapkan, tetapi tidak yakin bahwa saya akan selalu mendapatkan hasil yang diharapkan dalam jangka panjang seiring dengan pertumbuhannya.

Selain itu, saya sangat tertarik untuk menemukan cara untuk meminta sesuatu dari keadaan yang dibuat secara dinamis ke dalam keadaan lain yang dibuat secara dinamis.

Setiap ide di sini untuk merevisi ini guna menyelesaikan masalah itu akan dihargai seperti biasa di sini :)

Ini file negaranya:

/etc/skel:
  file.directory:
    - name: /etc/skel
    - user: root
    - group: root
    - dir_mode: 755
/etc/skel/.bash_logout:
  file.managed:
    - name: /etc/skel/.bash_logout
    - user: root
    - group: root
    - mode: 644
    - source: salt://user_management/templates/etc/skel/bash_logout.sls
/etc/skel/.bash_profile:
  file.managed:
    - name: /etc/skel/.bash_profile
    - user: root
    - group: root
    - mode: 644
    - source: salt://user_management/templates/etc/skel/bash_profile.sls
/etc/skel/.bashrc:
  file.managed:
    - name: /etc/skel/.bashrc
    - user: root
    - group: root
    - mode: 644
    - source: salt://user_management/templates/etc/skel/bashrc.sls
{% for group in pillar['user_management']['groups'] %}
{{- group }}:
  group.present:
    - name: "{{ pillar['user_management']['groups'][group]['name'] }}"
    - gid: "{{ pillar['user_management']['groups'][group]['gid'] }}"
    - system: "{{ pillar['user_management']['groups'][group]['system'] }}"
  {%- if pillar['user_management']['groups'][group]['addusers'] %}
    - addusers:
    {%- for add_user_name in pillar['user_management']['groups'][group]['addusers'] %}
      - {{ add_user_name }}
    {%- endfor %}
  {%- endif %}
  {%- if pillar['user_management']['groups'][group]['delusers'] %}
    - delusers:
    {%- for del_user_name in pillar['user_management']['groups'][group]['delusers'] %}
      - {{ del_user_name }}
    {%- endfor %}
  {%- endif %}
  {%- if pillar['user_management']['groups'][group]['members'] %}
    - members:
    {%- for member_name in pillar['user_management']['groups'][user]['members'] %}
      - {{ member_name }}
    {%- endfor %}
  {%- endif %}
{% endfor %}
{% for user in pillar['user_management']['users'] %}
{{- user }}:
  user.present:
    - name: "{{ pillar['user_management']['users'][user]['name'] }}"
    - uid: "{{ pillar['user_management']['users'][user]['uid'] }}"
    - gid: "{{ pillar['user_management']['users'][user]['gid'] }}"
    - gid_from_name: "{{ pillar['user_management']['users'][user]['gid_from_name'] }}"
  {%- if pillar['user_management']['users'][user]['groups'] %}
    - groups:
    {%- for group_name in pillar['user_management']['users'][user]['groups'] %}
      - {{ group_name }}
    {%- endfor %}
  {%- endif %}
  {%- if pillar['user_management']['users'][user]['optional_groups'] %}
    - optional_groups:
    {%- for optional_group_name in pillar['user_management']['users'][user]['optional_groups'] %}
      - {{ optional_group_name }}
    {%- endfor %}
  {%- endif %}
  {%- if pillar['user_management']['users'][user]['remove_groups'] %}
    - remove_groups:
    {%- for remove_group_name in pillar['user_management']['users'][user]['remove_groups'] %}
      - {{ remove_group_name }}
    {%- endfor %}
  {%- endif %}
    - home: "{{ pillar['user_management']['users'][user]['home'] }}"
    - createhome: "{{ pillar['user_management']['users'][user]['createhome'] }}"
    - password: "{{ pillar['user_management']['users'][user]['password'] }}"
    - enforce_password: "{{ pillar['user_management']['users'][user]['enforce_password'] }}"
    - empty_password: "{{ pillar['user_management']['users'][user]['empty_password'] }}"
    - shell: "{{ pillar['user_management']['users'][user]['shell'] }}"
    - unique: "{{ pillar['user_management']['users'][user]['unique'] }}"
    - system: "{{ pillar['user_management']['users'][user]['system'] }}"
    - fullname: "{{ pillar['user_management']['users'][user]['fullname'] }}"
    - require:
      - group: {{ user|replace("user", "group") }}
{% endfor %}

Berikut adalah file pilar pengguna:

user_management:
  users:
    user_mdresden:
      name: mdresden
      uid: 10000
      gid: 10000
      gid_from_name: True
      groups:
        - wheel
      optional_groups:
        - users
      remove_groups:
        # - list
      home: /home/mdresden
      createhome: True
      password: '$6$wBMXk1u6Jxapb5GR$o4YckBYhVjZZ28vyOkcPwBLMH2tcgWAPqdqzLLOGGY5DCM1aaz/rNfnjpMdcmE4GFt/5dzwu8z3YXViptLTMT/'
      enforce_password: True
      empty_password: False
      shell: "/bin/bash"
      unique: True
      system: False
      fullname: "Matthew Dresden"
    user_csunderarajulu:
      name: csunderarajulu
      uid: 10001
      gid: 10001
      gid_from_name: True
      groups:
        # - list
      optional_groups:
        - users
      remove_groups:
        # - list
      home: /home/csunderarajulu
      createhome: True
      password: '$6$wBMXk1u6Jxapb5GR$o4YckBYhVjZZ28vyOkcPwBLMH2tcgWAPqdqzLLOGGY5DCM1aaz/rNfnjpMdcmE4GFt/5dzwu8z3YXViptLTMT/'
      enforce_password: True
      empty_password: False
      shell: "/bin/bash"
      unique: True
      system: False
      fullname: "Chandrasekaran Sunderarajulu"

Berikut adalah file pilar grup:

user_management:
  groups:
    group_mdresden:
      name: mdresden
      gid: 10000
      system: False
      addusers:
        # - list
        # - list
      delusers:
        # - list
        # - list
      members:
    group_csunderarajulu:
      name: csunderarajulu
      gid: 10001
      system: False
      addusers:
        # - list
        # - list
      delusers:
        # - list
        # - list
      members:

Kesalahan tampaknya hanya terjadi pada proses nyata, bukan saat pengujian diaktifkan. Inilah kesalahan bagi pengguna:

user_|-user_csunderarajulu_|-csunderarajulu_|-present:
    ----------
    __run_num__:
        7
    __sls__:
        user_management.users.manage
    changes:
        ----------
    comment:
        One or more requisite failed: user_management.users.manage.group_csunderarajulu
    result:
        False
user_|-user_mdresden_|-mdresden_|-present:
    ----------
    __run_num__:
        6
    __sls__:
        user_management.users.manage
    changes:
        ----------
    comment:
        One or more requisite failed: user_management.users.manage.group_mdresden
    result:
        False

Inilah hasil ketika saya menghapus persyaratan:

user_|-user_csunderarajulu_|-csunderarajulu_|-present:
    ----------
    __run_num__:
        7
    changes:
        ----------
        fullname:
            Chandrasekaran Sunderarajulu
        gid:
            10001
        groups:
            - csunderarajulu
            - users
        home:
            /home/csunderarajulu
        homephone:
        name:
            csunderarajulu
        passwd:
            x
        roomnumber:
        shell:
            /bin/bash
        uid:
            10001
        workphone:
    comment:
        New user csunderarajulu created
    duration:
        106.136
    name:
        csunderarajulu
    result:
        True
    start_time:
        20:55:32.687433
user_|-user_mdresden_|-mdresden_|-present:
    ----------
    __run_num__:
        6
    changes:
        ----------
        fullname:
            Matthew Dresden
        gid:
            10000
        groups:
            - mdresden
            - users
            - wheel
        home:
            /home/mdresden
        homephone:
        name:
            mdresden
        passwd:
            x
        roomnumber:
        shell:
            /bin/bash
        uid:
            10000
        workphone:
    comment:
        New user mdresden created
    duration:
        153.671
    name:
        mdresden
    result:
        True
    start_time:
        20:55:32.532969

Meskipun grup tampaknya berhasil dibuat, output dari pembuatan grup juga menunjukkan kesalahan.

Berikut adalah keluaran untuk grup yang menunjukkan kesalahan:

group_|-group_csunderarajulu_|-csunderarajulu_|-present:
        ----------
        __run_num__:
            5
        changes:
            ----------
            Failed:
                ----------
                gid:
                    10001
        comment:
            Group {0} has been created but, some changes could not be applied
        duration:
            34.491
        name:
            csunderarajulu
        result:
            False
        start_time:
            13:40:14.615013
    group_|-group_mdresden_|-mdresden_|-present:
        ----------
        __run_num__:
            4
        changes:
            ----------
            Failed:
                ----------
                gid:
                    10000
        comment:
            Group {0} has been created but, some changes could not be applied
        duration:
            168.642
        name:
            mdresden
        result:
            False
        start_time:
            13:40:14.445528

Berikut adalah output dari: salt-call --local state.show_sls user_management.users.manage

local:
    ----------
    /etc/skel:
        ----------
        __env__:
            base
        __sls__:
            user_management.users.manage
        file:
            |_
              ----------
              name:
                  /etc/skel
            |_
              ----------
              user:
                  root
            |_
              ----------
              group:
                  root
            |_
              ----------
              dir_mode:
                  755
            - directory
            |_
              ----------
              order:
                  10000
    /etc/skel/.bash_logout:
        ----------
        __env__:
            base
        __sls__:
            user_management.users.manage
        file:
            |_
              ----------
              name:
                  /etc/skel/.bash_logout
            |_
              ----------
              user:
                  root
            |_
              ----------
              group:
                  root
            |_
              ----------
              mode:
                  644
            |_
              ----------
              source:
                  salt://user_management/templates/etc/skel/bash_logout.sls
            - managed
            |_
              ----------
              order:
                  10001
    /etc/skel/.bash_profile:
        ----------
        __env__:
            base
        __sls__:
            user_management.users.manage
        file:
            |_
              ----------
              name:
                  /etc/skel/.bash_profile
            |_
              ----------
              user:
                  root
            |_
              ----------
              group:
                  root
            |_
              ----------
              mode:
                  644
            |_
              ----------
              source:
                  salt://user_management/templates/etc/skel/bash_profile.sls
            - managed
            |_
              ----------
              order:
                  10002
    /etc/skel/.bashrc:
        ----------
        __env__:
            base
        __sls__:
            user_management.users.manage
        file:
            |_
              ----------
              name:
                  /etc/skel/.bashrc
            |_
              ----------
              user:
                  root
            |_
              ----------
              group:
                  root
            |_
              ----------
              mode:
                  644
            |_
              ----------
              source:
                  salt://user_management/templates/etc/skel/bashrc.sls
            - managed
            |_
              ----------
              order:
                  10003
    group_csunderarajulu:
        ----------
        __env__:
            base
        __sls__:
            user_management.users.manage
        group:
            |_
              ----------
              name:
                  csunderarajulu
            |_
              ----------
              gid:
                  10001
            |_
              ----------
              system:
                  False
            - present
            |_
              ----------
              order:
                  10005
    group_mdresden:
        ----------
        __env__:
            base
        __sls__:
            user_management.users.manage
        group:
            |_
              ----------
              name:
                  mdresden
            |_
              ----------
              gid:
                  10000
            |_
              ----------
              system:
                  False
            - present
            |_
              ----------
              order:
                  10004
    user_csunderarajulu:
        ----------
        __env__:
            base
        __sls__:
            user_management.users.manage
        user:
            |_
              ----------
              name:
                  csunderarajulu
            |_
              ----------
              uid:
                  10001
            |_
              ----------
              gid:
                  10001
            |_
              ----------
              gid_from_name:
                  True
            |_
              ----------
              optional_groups:
                  - users
            |_
              ----------
              home:
                  /home/csunderarajulu
            |_
              ----------
              createhome:
                  True
            |_
              ----------
              password:
                  $6$wBMXk1u6Jxapb5GR$o4YckBYhVjZZ28vyOkcPwBLMH2tcgWAPqdqzLLOGGY5DCM1aaz/rNfnjpMdcmE4GFt/5dzwu8z3YXViptLTMT/
            |_
              ----------
              enforce_password:
                  True
            |_
              ----------
              empty_password:
                  False
            |_
              ----------
              shell:
                  /bin/bash
            |_
              ----------
              unique:
                  True
            |_
              ----------
              system:
                  False
            |_
              ----------
              fullname:
                  Chandrasekaran Sunderarajulu
            |_
              ----------
              require:
                  |_
                    ----------
                    group:
                        group_csunderarajulu
            - present
            |_
              ----------
              order:
                  10007
    user_mdresden:
        ----------
        __env__:
            base
        __sls__:
            user_management.users.manage
        user:
            |_
              ----------
              name:
                  mdresden
            |_
              ----------
              uid:
                  10000
            |_
              ----------
              gid:
                  10000
            |_
              ----------
              gid_from_name:
                  True
            |_
              ----------
              groups:
                  - wheel
            |_
              ----------
              optional_groups:
                  - users
            |_
              ----------
              home:
                  /home/mdresden
            |_
              ----------
              createhome:
                  True
            |_
              ----------
              password:
                  $6$wrBLmNvzyQcHsunt$N6qAv4QR/9A4oPb07zeBbdMQTG7dhxMt.5nXUYY3STwqyRlYvGi5G/GmItOu2M.wLzAOz0ClhEsQIUXMGwIwp1
            |_
              ----------
              enforce_password:
                  True
            |_
              ----------
              empty_password:
                  False
            |_
              ----------
              shell:
                  /bin/bash
            |_
              ----------
              unique:
                  True
            |_
              ----------
              system:
                  False
            |_
              ----------
              fullname:
                  Matthew Dresden
            |_
              ----------
              require:
                  |_
                    ----------
                    group:
                        group_mdresden
            - present
            |_
              ----------
              order:
                  10006

Ini menghasilkan nama grup kebutuhan yang diharapkan. group_mdresden misalnya yang merupakan nama grup yang dihasilkan negara


person Dresden    schedule 02.03.2016    source sumber
comment
Bisakah Anda memposting hasil state.show_sls? Kami akan melihat dengan tepat nama, kebutuhan, dll... yang dihasilkan oleh file negara Anda.   -  person Christophe Drevet-Droguet    schedule 03.03.2016
comment
Terima kasih atas minat Anda; Saya menambahkan hasilnya ke bagian bawah pertanyaan.   -  person Dresden    schedule 03.03.2016
comment
Mengapa tidak mendefinisikan - requires saja? Anda dapat meminta pengguna mengharuskan status grupnya telah dijalankan dan salt akan mematuhi perintah tersebut.   -  person Wayne Werner    schedule 03.03.2016
comment
Saya pikir itulah yang telah dicapai - memerlukan: - grup: {{ pengguna|ganti(pengguna, grup) }}, perbedaan apa yang Anda sarankan   -  person Dresden    schedule 03.03.2016
comment
itu muncul dari output di atas show_sls yang membuat persyaratan di negara bagian   -  person Dresden    schedule 03.03.2016
comment
Segalanya tampak baik-baik saja, termasuk persyaratannya. Pesan kesalahan memberitahu kita bahwa persyaratan grup gagal. Apakah ada kesalahan di group negara bagian?   -  person Christophe Drevet-Droguet    schedule 04.03.2016
comment
Saya telah meninjau dan sekarang telah memposting keluaran grup, Itu memang menunjukkan kesalahan, yang saya belum mengerti yang mengeluh tentang pengaturan gid, tetapi sebenarnya mengaturnya dengan benar. Saya juga sekarang telah mencatat ketika klausa require ada, klausa tersebut gagal membuat pengguna. ketika saya menghapus klausa itu membuat pengguna dan grup seperti yang diharapkan, meskipun kesalahan grup mungkin masih ada. Sejauh yang saya tahu, opsi yang diperlukan tidak berfungsi. bantu saya lebih memahami bagaimana persyaratannya baik-baik saja; mungkinkah juga gagal karena kesalahan palsu pada pembuatan grup?   -  person Dresden    schedule 04.03.2016
comment
Saya menambahkan keluaran grup dan kesalahan yang tampak bermasalah ke postingan asli   -  person Dresden    schedule 04.03.2016
comment
@Dresden gid harus diberikan sebagai bilangan bulat, bukan sebagai string. Aku juga mengalami kesulitan dengan yang satu ini. Cobalah untuk menghapus tanda kutip ganda dari definisi gid negara bagian grup Anda. Maaf atas jawaban yang terlambat.   -  person Christophe Drevet-Droguet    schedule 29.03.2016


Jawaban (1)


Terima kasih Christophe Drevet-Drogue,

Gid dan uid dalam file negara saya dibungkus dengan tanda kutip ganda. Hal ini menyebabkannya ditafsirkan sebagai string, bukan bilangan bulat seperti yang diharapkan. Masalah itu menyebabkan semua masalah lainnya dikeluarkan.

Jadi jawaban atas pertanyaan awal adalah, contoh yang saya posting cukup memenuhi apa yang saya tanyakan dalam pertanyaan tersebut.

person Dresden    schedule 29.03.2016