MaaS: используйте Cloud-Init для автоматической настройки процесса развертывания

Я пытаюсь делать следующее в течение недели, но безуспешно! Я хочу создать MACVLAN во время развертывания машины. Я уже предоставил код для этого процесса с использованием синтаксиса Cloud-Init:

#cloud-config

write_files:
-   content: |
        #!/bin/bash

        sudo ip link add eth0 link enp0s3 type macvlan mode bridge
        sudo ifconfig eth0 up
    path: /tmp/macvlan.sh
    permissions: '777'
-   content: |
        [Unit]
        Description=macvlan setup service

        [Service]
        ExecStart=/etc/init.d/macvlan.sh

        [Install]
        WantedBy=multi-user.target
    path: /tmp/macvlan.service
    permissions: '777'

runcmd:
-   sudo mv /tmp/macvlan.sh /etc/init.d/macvlan.sh
-   sudo mv /tmp/macvlan.service /etc/systemd/system/macvlan.service
-   systemctl enable macvlan
-   systemctl start macvlan

Итак, теперь я хотел бы знать, как автоматически использовать этот код в процессе развертывания? Я знаю, что есть способ вручную использовать следующий код:

maas $PROFILE machine deploy $SYSTEM_ID user_data=$(base64 ./import_key.sh)

Но я хочу, чтобы MaaS делал это для всех машин автоматически (потому что я использую контроллер Juju для развертывания новых машин и не могу сделать это вручную). Если невозможно использовать Cloud-Init, можно ли использовать Curtin? Как?

1 ответ

Решение

Я наконец нашел ответ. Я добавил следующий код в /etc/maas/preseeds/curtin_userdata файл после late_commands: линия...

  foo_00: ["sh", "-c", "echo === Start Customization Scripts ==="]
  foo_02: ["curtin", "in-target", "--", "sh", "-c", "sudo touch /etc/init.d/macvlan.sh"]
  foo_03: ["curtin", "in-target", "--", "sh", "-c", "sudo touch /etc/systemd/system/macvlan.service"]
  foo_04: ["curtin", "in-target", "--", "sh", "-c", "sudo chmod 777 /etc/init.d/macvlan.sh"]
  foo_05: ["curtin", "in-target", "--", "sh", "-c", "sudo chmod 777 /etc/systemd/system/macvlan.service"]
  foo_06: ["curtin", "in-target", "--", "sh", "-c", "sudo echo '#!/bin/bash' >> /etc/init.d/macvlan.sh"]
  foo_07: ["curtin", "in-target", "--", "sh", "-c", "sudo echo ' ' >> /etc/init.d/macvlan.sh"]
  foo_08: ["curtin", "in-target", "--", "sh", "-c", "sudo echo 'sudo ip link add eth0 link eno1 type macvlan mode bridge' >> /etc/init.d/macvlan.sh"]
  foo_09: ["curtin", "in-target", "--", "sh", "-c", "sudo echo 'sudo ifconfig eth0 up' >> /etc/init.d/macvlan.sh"]
  foo_10: ["curtin", "in-target", "--", "sh", "-c", "sudo echo '[Unit]' >> /etc/systemd/system/macvlan.service"]
  foo_11: ["curtin", "in-target", "--", "sh", "-c", "sudo echo 'Description=macvlan setup service' >> /etc/systemd/system/macvlan.service"]
  foo_12: ["curtin", "in-target", "--", "sh", "-c", "sudo echo ' ' >> /etc/systemd/system/macvlan.service"]
  foo_13: ["curtin", "in-target", "--", "sh", "-c", "sudo echo '[Service]' >> /etc/systemd/system/macvlan.service"]
  foo_14: ["curtin", "in-target", "--", "sh", "-c", "sudo echo 'ExecStart=/etc/init.d/macvlan.sh' >> /etc/systemd/system/macvlan.service"]
  foo_15: ["curtin", "in-target", "--", "sh", "-c", "sudo echo ' ' >> /etc/systemd/system/macvlan.service"]
  foo_16: ["curtin", "in-target", "--", "sh", "-c", "sudo echo '[Install]' >> /etc/systemd/system/macvlan.service"]
  foo_17: ["curtin", "in-target", "--", "sh", "-c", "sudo echo 'WantedBy=multi-user.target' >> /etc/systemd/system/macvlan.service"]
  foo_18: ["curtin", "in-target", "--", "sh", "-c", "sudo systemctl enable macvlan"]
  foo_19: ["curtin", "in-target", "--", "sh", "-c", "sudo systemctl start macvlan"]
  foo_20: ["sh", "-c", "echo === Done Customization Scripts ==="]

Спасибо всем.

Другие вопросы по тегам