第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何使用 Pulumi 將 EFS 掛載到帶有 UserData 的 EC2 實(shí)例?

如何使用 Pulumi 將 EFS 掛載到帶有 UserData 的 EC2 實(shí)例?

Go
qq_笑_17 2023-03-15 13:47:17
我一直在努力能夠在使用 UserData 字段創(chuàng)建時(shí)將 EFS 卷安裝到 EC2 實(shí)例。我正在使用 Pulumi 的 Go 庫(kù),我擁有的內(nèi)容如下所示:// ... EFS with proper security groups and mountTarget created above ...dir := configuration.Deployment.Efs.MountPointavailabilityZone := configuration.Deployment.AvailabilityZoneregion := configuration.Deployment.Regionuserdata := args.Efs.ID().ToStringOutput().ApplyT(func(id string) (string, error) {    script := `            #!/bin/bash -xe            exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1            mkdir -p %s            echo "%s.%s.%s.amazonaws.com:/ %s nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,_netdev 0 0" | tee -a /etc/fstab            mount -a            `    return fmt.Sprintf(script, dir, availabilityZone, id, region, dir), nil}).(pulumi.StringOutput)ec2, err := ec2.NewInstance(ctx, fmt.Sprintf("%s_instance", name), &ec2.InstanceArgs{    // ... (other fields) ...    UserData: userdata,    // ... (other fields) ...})但是當(dāng)我使用 Pulumi 創(chuàng)建所有資源時(shí),UserData 腳本根本不運(yùn)行。我的假設(shè)是 EFS ID 在創(chuàng)建 EC2 實(shí)例時(shí)沒(méi)有及時(shí)解析,但我認(rèn)為 Pulumi 會(huì)自動(dòng)處理依賴排序,因?yàn)?EC2 實(shí)例現(xiàn)在依賴于 EFS 卷。我還添加了一個(gè) explicitDependsOn()來(lái)查看這是否可能是問(wèn)題所在,但它沒(méi)有幫助。我做錯(cuò)了什么嗎?任何幫助將不勝感激,謝謝!我已經(jīng)嘗試了上述示例的幾種變體。我看了這個(gè)例子:Pulumi - EFS Id output to EC2 LaunchConfiguration UserData但也無(wú)法讓它發(fā)揮作用。
查看完整描述

1 回答

?
蕪湖不蕪

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊

我能夠弄清楚,問(wèn)題最終變成了兩件事:

  1. 內(nèi)聯(lián)腳本的格式需要沒(méi)有制表符。

  2. pulumi.Sprintf()最終比使用ApplyT().

  3. EFS 卷在嘗試安裝時(shí)尚未準(zhǔn)備好安裝mount -a。

放在一起,它現(xiàn)在看起來(lái)像這樣:

instanceArgs := &ec2.InstanceArgs{

    // ... arg fields ...

}

script := `#!/bin/bash

exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1

mkdir -p %s

echo "%s.efs.%s.amazonaws.com:/ %s nfs4 nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport,_netdev 0 0" >> /etc/fstab

EFS_STATUS="unknown"

WAIT_TIME=10

RETRY_CNT=15

while [[ $EFS_STATUS != "\"available\"" ]]; do

  echo "Waiting for EFS to start..."

  sleep $WAIT_TIME

  EFS_STATUS=$(aws efs describe-file-systems | jq '.FileSystems | map(select(.FileSystemId == "%s")) |  map(.LifeCycleState) | .[0]')

done

while true; do

  mount -a -t nfs4

  if [ $? = 0 ]; then

    echo "Successfully mounted EFS to instance."

    break

  fi;

  if [ $RETRY_CNT -lt 1 ]; then

    echo "EFS could not mount after $RETRY_CNT retries."

  fi;

  echo "EFS could not mount, retrying..."

  ((RETRY_CNT--))

  sleep $WAIT_TIME

done`


userData := pulumi.Sprintf(script, mountDir, Efs.ID(), region, mountDir, Efs.ID())

instanceArgs.UserData = userData


ec2, err := ec2.NewInstance(ctx, fmt.Sprintf("%s_instance", name), instanceArgs)


查看完整回答
反對(duì) 回復(fù) 2023-03-15
  • 1 回答
  • 0 關(guān)注
  • 124 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)