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 ==="]
Спасибо всем.