Зацепление за события крышки как за события корня

Использование dscl даст

dscl . -passwd /Users/myuser ""
0
26.03.2018, 02:41
2 ответа

AMI FreeBSD на AWS не обеспечивает такой же уровень поддержки пользовательских _сценариев данных, как другие AMI. Как вы указали, он не поддерживает #cloud-boothookданные пользователя _и игнорирует любые данные пользователя _, переданные после загрузки.

Простое решение состоит в следующем:

sed -i '' '/KEYWORD: *firstboot$/d' /usr/local/etc/rc.d/ec2_configinit

Это хак --теперь ваш экземпляр будет выполнять все пользовательские _сценарии данных, даже без тега #cloud-boothook, но, на мой взгляд, это намного лучше, чем поведение сценария по умолчанию. Обратите внимание, что всегда можно полностью отключить скрипт ec2_configinit, выключив его в /etc/rc.conf.

1
28.01.2020, 02:43

Я даю свой собственный ответ, так как принятый ответ очень груб.

ОБНОВЛЕНИЕ :Я думал, что принятый ответ был очень грубым, но, в конце концов, я все равно использую его , так как он лучше всего подходит для меня. Остальное здесь просто даст некоторую дополнительную информацию, которая может кому-то показаться полезной. В конце концов, принятый ответ работает лучше всего для меня, потому что:(1 )он позволяет мне всегда выполнять сценарий оболочки, (2 )он не делает ничего, кроме обработки файла пользовательских данных в как я объясню ниже, (3 )Я все еще могу отключить его в rc.conf, если захочу.

Дело в том, что даже в Amazon Linux пользовательский -сценарий данных выполняется только при первой загрузке, за исключением случаев, когда вы используете трюк MIME multipart/mixed. Вы можете посмотреть https://cloudinit.readthedocs.io/en/latest/topics/format.html, но я привожу пример чего-то, что раздвигает границы :

.
Content-Type: multipart/mixed; boundary="schnipp-schnapp"
MIME-Version: 1.0

--schnipp-schnapp
Content-Type: text/cloud-config; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="cloud-config.txt"

#cloud-config
cloud_final_modules:
- [scripts-user, always]

--schnipp-schnapp
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="user-data.sh"

#!/bin/bash
echo "Hello World." >> /etc/motd

--schnipp-schnapp
Content-Type: text/x-shellscript; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename="another.sh"

#!/bin/bash
echo "Kilroy was here." >> /etc/motd

--schnipp-schnapp
Content-Type: image/jpeg
MIME-Version: 1.0
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="imput64-8503-small.jpg"

/9j/4AAQSkZJRgABAQEAlgCWAAD/2wBDAAYEBQYFBAYGBQYHBwYIChAKCgkJChQODwwQFxQYGBcU
FhYaHSUfGhsjHBYWICwgIyYnKSopGR8tMC0oMCUoKSj/2wBDAQcHBwoIChMKChMoGhYaKCgoKCgo
...
JFSUkfQjjHr9yT2T9SSSdLS15R/qM64pbLRUcsExOk6axzpxhiQATFSDIB6E68K/c6WlrzEoTypl
JoceL9zq7NbXis8oopa6RRNUQovmNlCM5IIzxQLkgkD0wQCAFLYaXzKkSSVEkzOZXqJJOUjsfXkf
cknJOMk++lpa9u+AGkJwsuJACiqCeJGm5pJiZJXBr4Sx04IfzZiS3I9r3/TQakADkD260tLWjxQk
hE9/tVFgPm8K/9k=

--schnipp-schnapp--

Я обнаружил, что два скрипта выполняются в алфавитном порядке, а часть изображения просто игнорируется.

Если только сопровождающие FreeBSD AMI не реализуют этот многокомпонентный -материал и все, что с ним связано

  • текст/облако -бутхук
  • текст/облако -конфигурация
  • текст/облако -конфигурация -архив
  • текст/jinja2
  • текст/часть -обработчик
  • текст/выскочка -задание
  • text/x -включить -один раз -url
  • text/x -включить -url
  • текст/x -сценарий оболочки

Почему вы хотите, чтобы все остальные вещи, которые делает ec2 -cloudinit, всегда выполнялись именно так? В конце концов, вы предоставлены сами себе.

На самом деле нет ничего плохого в том, чтобы самостоятельно получить пользовательские данные и решить, что с ними делать. Вот как это сделать:

fetch -q -o - http://169.254.169.254/latest/user-data

Итак, если вы хотите, чтобы он выполнялся, вы можете просто поместить его в rc.local:

fetch -q -o - http://169.254.169.254/latest/user-data |sh 

или

fetch -q -o /tmp/user-data.sh http://169.254.169.254/latest/user-data
mkdir 700 /tmp/user-data.sh
/tmp/user-data.sh

На самом деле ничего страшного. Не уверен, стоит ли поддерживать сложную составную структуру. FreeBSD AMI делает это совсем по-другому, проще и, возможно, просто отлично.

  • если он начинается с решетки -бах #! он будет сохранен и выполнен
  • если он начинается с «>/var/tmp/here», он будет записан в указанное место назначения
  • если он начинается с «>>/var/tmp/here», он будет добавлен к указанному месту назначения
  • в противном случае он обрабатывается как несжатый tar-архив сценариев оболочки, расширяется, а затем каждый из файлов выполняется с использованием вышеуказанных правил.

Поскольку это не стандарт AWS, я бы просто не стал с этим связываться. Просто создайте один скрипт и заставьте его выполняться в rc.local или даже не выполняться, а просто проверяться, чтобы найти какой-то параметр, который каким-то образом управляет поведением.

0
28.01.2020, 02:43

Теги

Похожие вопросы