Size: a a a

2021 October 11

KP

Kirill Proskurin in Saltstack
и таск который получает uuid
источник

L

LightVik in Saltstack
{%- set mountpoints = salt['pillar.get']('mountpoints') %}

{%- for mountpoint in mountpoints %}
 {%- if not salt['mount.is_mounted'](mountpoint) %}
   {%- set disk_number = 1 + loop['index'] %}

   {%- for block_device in salt['partition.get_block_device']() %}
     {%- set block_device_size = salt['partition.list'](device='/dev/' ~ block_device, unit='GiB')['info']['size'].split('.')[0] %}
     {%- set block_device_vm_disk_number = block_device_size | list | last %}
     {%- if block_device_vm_disk_number | int == disk_number | int %}
       {%- if not salt['partition.exists']('/dev/' ~ block_device ~ '1') %}
{{ sls }} - create gpt table and partition on {{ '/dev/' ~ block_device ~ '1' }}:
 cmd.run:
   - creates: {{ '/dev/' ~ block_device ~ '1' }}
   - name: bash -c 'parted --script {{ '/dev/' ~ block_device }} mktable gpt \ mkpart gpt ext4 0% 100%'
       {%- else %}
{{ sls }} - format partition - {{ '/dev/' ~ block_device ~ '1' }}:
 blockdev.formatted:
   - name: {{ '/dev/' ~ block_device ~ '1' }}
   - fs_type: ext4
         {%- if salt['disk.blkid']('/dev/' ~ block_device ~ '1')['/dev/' ~ block_device ~ '1']['UUID'] is defined %}
           {%- set fs_uuid = salt['disk.blkid'](device='/dev/' ~ block_device ~ '1')['/dev/' ~ block_device ~ '1']['UUID'] %}

{{ sls }} - {{ mountpoint }}:
 mount.mounted:
   - name: {{ mountpoint }}
   - device: UUID={{ fs_uuid }}
   - fstype: ext4
   - opts: defaults
   - dump: 0
   - pass_num: 2
   - persist: True
   - mkmnt: True
         {%- endif %}
       {%- endif %}
       {%- break %}
     {%- else %}
       {%- continue %}
     {%- endif %}
   {%- endfor %}
 {%- endif %}
{%- endfor %}
источник

KP

Kirill Proskurin in Saltstack
oh shi
источник

L

LightVik in Saltstack
🥲
источник

L

LightVik in Saltstack
в общем после исполнения blockdev.formatted для следующего стейта нужно узнать UUID у FS
источник

KP

Kirill Proskurin in Saltstack
Должно быть что-то вроде:

    - device:
       UUID=__slot__:salt:disk.blkid(device='/dev/' ~ block_device ~ '1')['/dev/' ~ block_device ~ '1']['UUID']


Не проверял
источник

L

LightVik in Saltstack
сегодня завтра проверю, спасибо огромное
источник

KP

Kirill Proskurin in Saltstack
Я бы рекомендовал сделать отдельный, простой таск и на нем тренироватся а не гонять вот эту простыню каждый раз
источник

KP

Kirill Proskurin in Saltstack
начать с захардкоженых аргументов для disk.blkid например
источник

KP

Kirill Proskurin in Saltstack
И шаг за шагом усложнять
источник

J

JTProgru in Saltstack
Народ, а ткните носом ибо туплю. В доке пока не нашел, а очень надо.
Как именно работает unless если передать в него две проверки?
Вот в таком примере:
default-python3-pkg:
 pkg.installed:
   - pkgs:
     - python3
   - unless:
     - pkg.is_installed:
         name: rh-python36-python
     - pkg.is_installed:
         name: rh-python35-python

Две проверки в unless будут через AND или через OR собираться?
источник

R

Roman in Saltstack
есть же в доке
The unless requisite operates as NAND and is useful in giving more granular control over when a state should execute.
и пример там есть, не буду его копировать
источник

R

Roman in Saltstack
впрочем, почему бы и нет

vim:
 pkg.installed:
   - unless:
     - rpm -q vim-enhanced
     - ls /usr/bin/vim

In the example above, the state will only run if either the vim-enhanced package is not installed (returns False) or if /usr/bin/vim does not exist (returns False). The state will run if both commands return False.

However, the state will not run if both commands return True.
источник

J

JTProgru in Saltstack
видать в глаза долблюсь =(
Спасибо!
источник

R

Roman in Saltstack
   - unless:
     - pkg.is_installed:
         name: rh-python36-python

а это прям работает?

В доке пример
...
   - unless:
     - fun: pkg.version
       args:
         - mysql-server-5.7

Changed in version 3000: The unless requisite can take a module as a dictionary field in unless. The dictionary must contain an argument fun which is the module that is being run, and everything else must be passed in under the args key or will be passed as individual kwargs to the module function.
источник

J

JTProgru in Saltstack
У меня он старый очень :|
источник

J

JTProgru in Saltstack
Вроде работает
источник

R

Roman in Saltstack
в старом емнип вообще нельзя было модули солта вызывать
источник

J

JTProgru in Saltstack
Ну вот у меня 2017…
источник

J

JTProgru in Saltstack
Работает
источник