linux Cloud-init文件命令行选项“S”[from -fsSL]与其他选项结合使用时无法理解

e0bqpujr  于 2023-01-29  发布在  Linux
关注(0)|答案(1)|浏览(196)

我想执行这个cloud-init文件和terraform文件:
云初始化:

#cloud-config
runcmd:
  - mkdir react
  - cd react
  - type -p curl >/dev/null || sudo apt install curl -y
    curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \
    && sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \
    && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
    && sudo apt update \
    && sudo apt install gh -y
  - curl -o actions-runner-linux-x64-2.301.1.tar.gz -L https://github.com/actions/runner/releases/download/v2.301.1/actions-runner-linux-x64-2.301.1.tar.gz
  - tar xzf ./actions-runner-linux-x64-2.301.1.tar.gz
  - yes "" | ./config.sh --url https://github.com/yuuval/react-deploy --token AVYXWHXNRBPIDXJDPUDK6QTD2LIPE
  - sudo ./svc.sh install
  - sudo ./svc.sh start
  - yes "" | sudo apt install nginx
  - gh auth login --hostname github.com --with-token <<< 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 --git-protocol https
  - gh repo clone yuuval/react-deploy
  - cd react-deploy
  - gh workflow run node.js.yml
  - sleep 70
  - cd /etc/nginx/sites-available
  - sudo rm default
  - echo     "server {
      listen 80 default_server;
      server_name _;
      # react app & front-end files
      location / {
       root /home/ubuntu/react/_work/react-deploy/react-deploy/build;
       try_files \$uri /index.html;
      }
    }" | sudo tee /etc/nginx/sites-available/default
  - sudo service nginx restart
  - sudo chmod +x /home
  - sudo chmod +x /home/ubuntu
  - sudo chmod +x /home/ubuntu/react
  - sudo chmod +x /home/ubuntu/react/_work
  - sudo chmod +x /home/ubuntu/react/_work/react-deploy
  - sudo chmod +x /home/ubuntu/react/_work/react-deploy/react-deploy
  - sudo chmod +x /home/ubuntu/react/_work/react-deploy/react-deploy/build

我认为terraform文件是无关紧要的。所以当我用terraform init和terraform apply运行整个过程时,它被抛出了,但什么也没有发生。在cloud-init-output文件的/var/log中,我发现了这个错误:

dd: unrecognized operand ‘ ’
Try 'dd --help' for more information.
E: Command line option 'S' [from -fsSL] is not understood in combination with the other options.

我猜它来自此命令,该命令应安装gh cli(可在以下位置找到:https://github.com/cli/cli/blob/trunk/docs/install_linux.md):

type -p curl >/dev/null || sudo apt install curl -y
    curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg \
    && sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg \
    && echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \
    && sudo apt update \
    && sudo apt install gh -y

如果我手动完成整个cloud-init文件,它就可以工作了。所以我不知道还能做什么。

czq61nw1

czq61nw11#

install curl -y之后,您似乎缺少\&&,因为我刚刚在两台WSL机器上试用(这是我现在所拥有的全部),在那里一切都很好。
所以我怀疑你的curl命令在里面被弄糊涂了,因为你没有分别运行小命令和大命令,但是它们应该是分开的,所以也许给予试试?在这个奇怪的页面上(通过精确搜索找到的)https://ouyen.github.io/github/我没有找到install curl -y,而是找到了下一个,这清楚地表明它是分开运行的,所以我认为你的问题就在那里。

相关问题