Ansible:在动态 ec2 上设置用户

2024-06-29

我似乎没有连接到远程主机。为什么不?

命令行:ansible-playbook -i "127.0.0.1," -c local playbook.yml

这是剧本。角色 create_ec2_instance 创建变量ec2hosts在剧本的第二部分(ansible/playbook.yml)中使用:

# Create instance
- hosts: 127.0.0.1
  connection: local
  gather_facts: false
  roles:
    - create_ec2_instance

# Configure and install all we need
- hosts: ec2hosts
  remote_user: admin
  gather_facts: false
  roles:
    - show-hosts
    - prepare-target-system
    - install-project-dependencies
    - install-project

这只是一个简单的 ec2 模块创建。这按预期工作。 (ansible/角色/create-ec2-instance/tasks/main.yml):

- name: Create instance
  ec2:
    region: "{{ instance_values['region'] }}"
    zone: "{{ instance_values['zone'] }}"
    keypair: "{{ instance_values['key_pair'] }}"
    group: "{{ instance_values['security_groups'] }}"
    instance_type: "{{ instance_values['instance_type'] }}"
    image: "{{ instance_values['image_id'] }}"
    count_tag: "{{ instance_values['name'] }}"
    exact_count: 1
    wait: yes
    instance_tags:
      Name: "{{ instance_values['name'] }}"
  when: ec2_instances.instances[instance_values['name']]|default("") == ""
  register: ec2_info

- name: Wait for instances to listen on port 22
  wait_for:
    state: started
    host: "{{ ec2_info.instances[0].public_dns_name }}"
    port: 22
  when: ec2_info|changed

- name: Add new instance to ec2hosts group
  add_host:
    hostname: "{{ ec2_info.instances[0].public_ip }}"
    groupname: ec2hosts
    instance_id: "{{ ec2_info.instances[0].id }}"
  when: ec2_info|changed

我已经包含了额外的透明度方法,尽管这些方法非常基本(ansible/roles/show-hosts/tasks/main.yml):

- name: List hosts
  debug: msg="groups={{groups}}"
  run_once: true

我们有(ansible/roles/prepare-target-system/tasks/main.yml):

- name: get the username running the deploy
  local_action: command whoami
  register: username_on_the_host

- debug: var=username_on_the_host

- name: Add necessary system packages
  become: yes
  become_method: sudo
  package: "name={{item}} state=latest"
  with_items:
    - software-properties-common
    - python-software-properties
    - devscripts
    - build-essential
    - libffi-dev
    - libssl-dev
    - vim

编辑:我已经更新到remote_user上面和下面是错误输出:

TASK [prepare-target-system : debug] *******************************************
task path: <REDACTED>/ansible/roles/prepare-target-system/tasks/main.yml:5
ok: [35.166.52.247] => {
    "username_on_the_host": {
        "changed": true,
        "cmd": [
            "whoami"
        ],
        "delta": "0:00:00.009067",
        "end": "2017-01-07 08:23:42.033551",
        "rc": 0,
        "start": "2017-01-07 08:23:42.024484",
        "stderr": "",
        "stdout": "brianbruggeman",
        "stdout_lines": [
            "brianbruggeman"
        ],
        "warnings": []
    }
}

TASK [prepare-target-system : Ensure that we can update apt-repository] ********
task path: /<REDACTED>/ansible/roles/prepare-target-system/tasks/Debian.yml:2
Using module file <REDACTED>/.envs/dg2/lib/python2.7/site-packages/ansible/modules/core/packaging/os/apt.py
<35.166.52.247> ESTABLISH LOCAL CONNECTION FOR USER: brianbruggeman
<35.166.52.247> EXEC /bin/sh -c '( umask 77 && mkdir -p "` echo $HOME/.ansible/tmp/ansible-tmp-1483799022.33-268449475843769 `" && echo ansible-tmp-1483799022.33-268449475843769="` echo $HOME/.ansible/tmp/ansible-tmp-1483799022.33-268449475843769 `" ) && sleep 0'
<35.166.52.247> PUT /var/folders/r9/kv1j05355r34570x2f5wpxpr0000gn/T/tmpK2__II TO <REDACTED>/.ansible/tmp/ansible-tmp-1483799022.33-268449475843769/apt.py
<35.166.52.247> EXEC /bin/sh -c 'chmod u+x <REDACTED>/.ansible/tmp/ansible-tmp-1483799022.33-268449475843769/ <REDACTED>/.ansible/tmp/ansible-tmp-1483799022.33-268449475843769/apt.py && sleep 0'
<35.166.52.247> EXEC /bin/sh -c 'sudo -H -S -n -u root /bin/sh -c '"'"'echo BECOME-SUCCESS-owktjrfvqssjrqcetaxjkwowkzsqfitq; /usr/bin/python <REDACTED>/.ansible/tmp/ansible-tmp-1483799022.33-268449475843769/apt.py; rm -rf "<REDACTED>/.ansible/tmp/ansible-tmp-1483799022.33-268449475843769/" > /dev/null 2>&1'"'"' && sleep 0'
failed: [35.166.52.247] (item=[u'software-properties-common', u'python-software-properties', u'devscripts', u'build-essential', u'libffi-dev', u'libssl-dev', u'vim']) => {
    "failed": true,
    "invocation": {
        "module_name": "apt"
    },
    "item": [
        "software-properties-common",
        "python-software-properties",
        "devscripts",
        "build-essential",
        "libffi-dev",
        "libssl-dev",
        "vim"
    ],
    "module_stderr": "sudo: a password is required\n",
    "module_stdout": "",
    "msg": "MODULE FAILURE"
}
  to retry, use: --limit @<REDACTED>/ansible/<redacted playbook>.retry

PLAY RECAP *********************************************************************
127.0.0.1                  : ok=6    changed=2    unreachable=0    failed=0
35.166.52.247              : ok=3    changed=1    unreachable=0    failed=1

Use become:

remote_user: ansible
become: true
become_user: root

Ansible 文档:成为(权限提升) http://docs.ansible.com/ansible/become.html

例如:在我的脚本中,我以用户“ansible”连接到远程主机(因为 root 禁用 ssh),然后成为“root”。很少,我以“ansible”连接,然后成为“apache”用户。所以,remote_user指定要连接的用户名,become_user是连接后的用户名。

PS 用户 ansible 的无密码 sudo:

- name: nopasswd sudo for ansible user
  lineinfile: "dest=/etc/sudoers state=present regexp='^{{ ansible_user }}' line='{{ ansible }} ALL=(ALL) NOPASSWD: ALL'"

这是已知的解决方法,请参见此处:为 Ansible 指定 sudo 密码 https://stackoverflow.com/questions/21870083/specify-sudo-password-for-ansible/22201707#22201707

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ansible:在动态 ec2 上设置用户 的相关文章

随机推荐

  • 从 Intranet 上的另一台计算机访问 IIS 7.5 Express

    我在带有 SP1 Beta 和 IIS 7 5 Express 的 VS 2010 Pro 上运行 一切工作正常 但我试图从内联网上的另一台计算机访问该站点 但它似乎看不到任何内容 我只是得到一个 糟糕 此链接似乎已损坏 Chrome 中的
  • 如何使用 JQuery 创建新的 img 标签,并使用 JavaScript 对象中的 src 和 id?

    我从基本意义上了解 JQuery 但对它绝对是新手 并且怀疑这很容易 我在 JSON 响应中获得了图像 src 和 id 转换为对象 因此在 responseObject imgurl 和 responseObject imgid 中获得了
  • 如何修复 iPhone 项目“失败的协同设计验证”?

    昨晚 iPhone项目完美搭建 今天早上我安装了XCode 3 2 3 in a separate文件夹 当我在旧版本中打开相同的项目时XCode 3 2 2并重新构建了该项目 我收到这个警告 应用程序协同设计失败 确认 签名是 无效 或者
  • React Redux Toolkit:如何使用 createSlice 将初始状态存储到 localStorage?

    我对如何将我的任务切片的初始状态存储到我的本地存储中有点太困惑了 你能帮我解决这个问题吗 我想要的结果是 如果应用程序运行 initialState 将存储在 localStorage 中 因为我正在做的是在我的组件中使用 useSelec
  • 使用 R 中的剪切函数对缺失值进行 NA 级别[重复]

    这个问题在这里已经有答案了 R 中的 cut 函数省略了 NA 但我想要一个缺失值的级别 这是我的 MWE set seed 12345 Y lt c rnorm n 50 mean 500 sd 1 NA Y1 lt cut log Y
  • 应用程序旋转为横向和纵向,但不会颠倒旋转

    在我的手机 iOS 13 1 2 上运行简单的概念验证 iPhone 应用程序时 它不会颠倒旋转 它可以很好地旋转到任一横向方向 但不会颠倒 一件奇怪的事情是 还有一个 UITextEffects 窗口 其视图控制器得到supportedI
  • 从java类文件获取apache webcontents文件夹的绝对路径[重复]

    这个问题在这里已经有答案了 需要在动态 Web 应用程序内获取 java 类文件中的绝对路径 实际上我需要获取 apache webapps 文件夹的路径 部署 webapps 的位置 e g apache root webapps my
  • 特殊字符和 URL 重写

    我目前正在开发一个应用程序 该应用程序从暴雪社区 API 中提取 JSON 数据并使用 PHP 对其进行解析 一切正常 直到我遇到一个名字中有特殊字符的角色 为了提取角色数据 我需要知道他们的角色名称和他们所在的领域 我将名称和领域通过 U
  • 在 R 中提取栅格的最快方法(提高我的可重现代码的时间)

    我想知道我是否已最大化提取栅格中某个点周围缓冲区域平均值的速度 本地的性能可以进一步提高吗 I use parallel mclapply已经 我知道我可以通过在集群上设置和运行它来获得进一步的收益 使用集群或获得更多的CPU不是我正在寻找
  • 多个 .htaccess 文件中多个 mod_rewrite 规则的优先级是什么? [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 据我了解 L 遵循重写规则意味着它是 最后一个 但我不清楚范围是什么 例如 当有多个 htaccess 文件时 有些文件带有 L 哪些会适用 Exam
  • 我可以在 Firebase 上管理多少个客户端应用?

    非常简单的用例 客户购买我们的应用程序并每月支付 20 美元 我们希望在 iOS 和 Android 上实现推送通知 并正在考虑可扩展的解决方案 我们考虑简单地将所有应用程序分组到一个 Firebase 项目中 因为我们只需要推送通知 Go
  • 如何拦截javascript中innerHTML的变化?

    我需要拦截网页内单元格内容的任何更改 以下代码显示 addEventListener 不起作用 function modifyText alert var el document getElementById mycell el inner
  • AngularJS 的 HEAD 与 BODY

    在所有 AngularJS 示例中 Angular 库都放置在文档的 HEAD 标签中 我有一个基于 HTML5 Boilerplate 布局构建的现有项目 这定义了 JS 库应该放置在 DOM 的最底部 在 tag AngularJS需要
  • Solr Schemaless 模式将字段创建为多值

    我在无模式模式下使用 Solr 6 1 创建集合并对示例数据建立索引后 创建的字段均设置为 MultiValued true 唯一 id 除外 问题是当使用 SolrNet 查询这些数据时 它不会将结果正确映射到模型 查询结果以数组形式返回
  • 如何在 Android 键盘中包含建议

    我正在开发 Android 软键盘 我已经创建了键盘布局 但不知道如何包含在 EditText 中键入一些单词时出现的建议 例如 如果我写 在 中 已知 和 已知 将显示在建议中 所以我的问题是 1 如何在 Android 软键盘中包含建议
  • Java中有没有办法随机获取HashMap的值?

    Java中有没有办法随机获取HashMap的值 这有效 Random generator new Random Object values myHashMap values toArray Object randomValue values
  • 帮助使用 jquery 验证插件和复选框

    我有一个复选框组 需要对其进行唯一命名 以将值单独存储在数据库中 但是 使用 jquery 验证插件 我无法验证名称不同的组
  • cURL 错误 28:5001 毫秒后解析超时

    我使用 WordPress 最近将我的网站从 cpanel 主机移动到带有 directadmin 面板的 Linux 服务器 转账后立即发现客户在通过EDD插件下载时出现以下错误 cURL 错误 28 5001 毫秒后解析超时 我也遇到了
  • 索引与行中的多个条件匹配

    我正在制作一个电子表格 其中 B 列中包含股票代码 ID I 列中包含与这些代码相对应的成员 J 列中包含费率 费率根据编号而变化 成员 因此一个股票代码 ID 可以位于多行中 在我的输出中 我需要特定股票 ID 和成员的费率 它应该查找确
  • Ansible:在动态 ec2 上设置用户

    我似乎没有连接到远程主机 为什么不 命令行 ansible playbook i 127 0 0 1 c local playbook yml 这是剧本 角色 create ec2 instance 创建变量ec2hosts在剧本的第二部分