即使在开始时已经输入,Ansible 同步也会提示密码

2024-04-12

Ansible (v1.6.5) 的同步模块提示输入密码(Enter passphrase for key)尽管我一开始就已经输入了运行剧本。

知道为什么吗?

我使用以下选项运行我的剧本:

-u myuser --ask-sudo-pass --private-key=/path/to/id_rsa

这是我的同步任务:

- name: synchronize source files in src location
  sudo: yes
  synchronize: src={{local_src}} dest={{project_dirs.src}} archive=yes delete=yes rsync_opts=["--compress"]
  when: synchronize_src_files

使用 ssh-agent 更新

按照 Lekensteyn 的建议,我尝试使用 ssh-agent 。 我不再有提示,但任务失败。我缺少什么?

eval `ssh-agent -s`
ssh-add ~/.ssh/id_rsa

错误:

TASK: [rolebooks/project | synchronize source files in src location] **********
failed: [10.0.0.101] => {"cmd": "rsync --delay-updates -FF --compress --delete-after --archive --rsh 'ssh -i /home/vagrant/.ssh/id_rsa -o StrictHostKeyChecking=no' --rsync-path=\"sudo rsync\" [--compress] --out-format='<<CHANGED>>%i %n%L' /projects/webapp [email protected] /cdn-cgi/l/email-protection:/var/local/sites/project1/src", "failed": true, "rc": 12}
msg: sudo: no tty present and no askpass program specified
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.0]

The synchronize命令(至少 Ansible 1.6.6)似乎忽略了 Ansible 打开的正常 SSH 控制套接字。您的任务可以扩展到以下内容:

{
    "cmd": "rsync --delay-updates -FF --compress --archive
        --rsh 'ssh  -o StrictHostKeyChecking=no'
        --out-format='<<CHANGED>>%i %n%L'
        /home/me/src/ user@host:/dest/",
    "failed": true,
    "rc": 23
}

要获取这些详细信息,请使用以下命令运行您的剧本-v选项。作为解决此问题的方法,您可以开始ssh-agent并添加缓存您的 SSH 密钥ssh-add。有关详细信息,请参阅他们的手册页。

额外的警告synchronize module:

  • 当运行时sudo: yes, ansible 将运行--rsh 'sudo ssh'如果远程 sudo 配置需要密码和/或 TTY,这将会中断。解决办法:设置sudo: no在你的任务定义中。
  • 登录远程计算机的用户是您的 SSH 用户(ansible_ssh_user),而不是 sudo 用户。我还没有找到覆盖此用户的方法(除了未经测试的方法,该方法可以使用-o User通过其他选项之一的选项(dest_port="22 -o User=your_user"?)结合set_remote_user=yes).

这取自我的任务文件:

- name: sync app files
  sudo: no
  synchronize: src={{app_srcdir}}/ dest={{appdir}}/
               recursive=yes
               rsync_opts=--exclude=.hg
# and of course Ubuntu 12.04 does not support --usermap..
#,--chown={{deployuser}}:www-data
# the above goes bad because ansible_ssh_user=user has no privileges
#  local_action: command rsync -av --chown=:www-data
#                 {{app_srcdir}}
#                 {{deployuser}}@{{inventory_hostname}}:{{appdir}}/
#  when: app_srcdir is defined
# The above still goes bad because {{inventory_hostname}} is not ssh host...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

即使在开始时已经输入,Ansible 同步也会提示密码 的相关文章

  • 根据AWS标签分配ansible变量

    我正在尝试找出一种根据 AWS 中的标签在 Ansible 中分配变量的方法 我正在尝试ec2 remote tags但它返回的信息比我需要的多得多 似乎应该有一种更简单的方法来做到这一点 但我只是没有想到 例如 如果我有一个名为funct
  • Ansible 要求安装 MySQL-python,尽管它已经安装

    我正在尝试使用在 Mac OSX 上运行的 Ansible 控制器创建一个新的 MySQL 数据库 当我第一次得到msg the python mysqldb module is required错误消息 我添加了一个任务来安装MySQL
  • 如何在 Ansible 中的 do-until 循环中指定多个条件

    我正在拨打 REST 电话 并想在继续之前检查我的请求是否已完成 在响应中 我收到 PENDING 或 IN PROGRESS 作为 request status 我想等到我得到 完成 或 失败 为此 我想在收到 PENDING 或 IN
  • Ansible 中的角色和任务(和标签)有什么区别?

    我发现自己很困惑roles and tasks每时每刻 我知道标签是标记单个项目的一种方式 但我很困惑如何使用它们 假设我必须执行以下操作 Users Create a user named deploy Add ssh key for d
  • Ansible、瞻博网络 CLI 命令。超时错误?

    我正在尝试将我用 Python 编写的自动化脚本传输到 ansible 公司请求 但我以前从未使用过 ansible 我已经尝试过 wait for 但我也没有让它发挥作用 在脚本中 我可以设置 dev timeout None 或我需要的
  • ansible if else 构造

    这是我的 if else Ansible 逻辑 name Check certs exist stat path etc letsencrypt live rootDomain fullchain pem register st inclu
  • Ansible - .env 文件中的环境变量

    我正在尝试设置一个剧本 它将运行命令来检查目标计算机中安装的服务的状态 该命令仅在以下情况下才有效 env file被执行 执行的命令 env file is
  • ssl:身份验证方法 ssl 需要密码

    在尝试通过 Ansible 连接到 Windows 虚拟机时 我遇到了以下问题 TASK setup lt 10 xx xx xx gt ESTABLISH WINRM CONNECTION FOR USER winad admin on
  • 使用 Ansible 从服务列表中仅启动特定的 systemd 服务

    我有清单systemd服务定义为 vars systemd scripts a service b service c service 现在我只想停下来a service从上面的列表中 如何使用来实现这一点systemd https doc
  • 如何防止 Ansible 对 JSON 重新排序?

    给定以下剧本 从随机数据中获取一些数据网络服务 http jsonplaceholder typicode com users name sorting json hosts localhost tasks name uri url htt
  • 将变量内容复制到事实中后,Ansible 会抛出错误

    我有变量 其中包含带有其他模板引擎标记的字符串 不幸的是它们是三个花括号 如果我直接使用这些变量 一切都很好 如果我将它们复制到事实中以便随后修改它们 Ansible 会抛出错误 示例剧本 hosts localhost connectio
  • 如何在 playbook 中使用 Ansible Tower 登录凭据?

    是否可以使用我用来直接在剧本中登录 Ansible Tower 的凭据 是的 您可以通过使用 保存您的凭据 来完成此操作安西布尔塔 Ansible Tower 上的凭证类型 从 Ansible Tower UI 中 转至 Credentia
  • 根据磁盘可用空间获取节点IP

    我正在尝试编写一个 Ansible 剧本来检查多个服务器上的磁盘空间 到目前为止 这是我的 Ansible 剧本 hosts all become yes tasks name Check freespace shell df h awk
  • 如何将文件从 Ansible Tower 上传到 Artifactory?

    我每次都会收到此错误 但仅在尝试从 Ansible Tower 上传到 Artifactory 时出现在特定文件上 这些文件都是在清单主机上创建的Oracle Collection Tool 然后在上传到 Artifactory 之前获取到
  • 从上一个任务获取更改/失败的主机列表 |安西布尔

    All 示例 如果我有 20 个主机用于剧本并使用 Serial 10 运行它们 则以下 shell 命令一次在 10 个主机上运行 完成后 将调用处理程序任务 其中创建 dict dict 的任务不会提供字典输出 因此第二个任务 失败的主
  • Ansible 手册:错误! “command”不是 Play 的有效属性[重复]

    这个问题在这里已经有答案了 我只是想写一个基本的剧本 并不断收到下面的错误 尝试了很多东西但仍然无法做到正确 我知道这一定是语法问题 但不知道在哪里 这是我的代码 This playbook runs a basic DF command
  • 如果不满足某些条件,如何跳过ansible剧本中的所有其他剧本?

    我在下面的剧本中有多个剧本 如果不满足某些条件 我想忽略所有其他戏剧 因此 对于下面的示例 如果我在中找不到任何新文件Play1然后我不想执行Play2 and Play3根本没有 它应该跳过它 我怎样才能做到这一点 I have end
  • 使用 ansible SSH 到远程服务器

    我正在使用 ansible 来自动化一些任务 其中之一要求我ssh到服务器A 然后从A到B 然后从B到C 我似乎找不到任何方法来做到这一点 有什么建议么 鉴于您不使用 Paramiko 进行 ssh transport ssh https
  • 带变量的 ansible regex_search

    如何在ansible playbook中使用正则表达式查找匹配项 其中变量出现在regex search争论 以下剧本在使用以下命令运行时找不到匹配项 ansible playbook playbook yml hosts localhos
  • Ansible 权限问题

    我正在尝试将当前用户添加到系统中的某个组 然后执行需要该组权限的命令 我的剧本是这样的 name Add this user to RVM group sudo true user state present name vagrant ap

随机推荐

  • TFS 合并:无法丢弃变更集

    我们有一个变更集 开发人员已签入对源分支和目标分支的更改 许多更改包括两个分支中的重命名 从源分支到目标分支的变更集合并进展顺利 但变更集仍保留在要合并的变更集列表中 当我现在尝试再次合并更改集时 它显示 没有要合并的更改 并且变更集保留在
  • 数组值不相同(但它们是?)

    我有两个数组 它们似乎包含至少一组相同的值 但执行array diff 即使我认为应该返回任何内容 也不会返回任何内容 这应该只是例行代码 但由于某种原因它不喜欢我所做的 奇怪的是var dump queue 0 回报String 167
  • 创建一个简单的 Makefile 来构建共​​享库

    我正在尝试创建一个非常基本的手工制作的 Makefile 来创建一个共享库来说明一点 这是我到目前为止所拥有的 SHELL bin sh CC gcc FLAGS std gnu99 Iinclude CFLAGS fPIC pedanti
  • JSON 请求发送空数据(swift)

    我的 iOS 应用程序正在向 Web 服务发送空数据 我花了几个小时寻找解决方案 但没有任何效果 应用程序应该通过 php 脚本将 kontrah 号码发送到数据库 然后数据库必须识别是否可以在数据库中找到 kontrah 编号 然后 如果
  • 将 JPA 或 Hibernate 投影查询映射到 DTO(数据传输对象)

    在我的 DAO 层中 我有一个像这样的 Find 函数 public List
  • 颤动设备选择未显示(目标选择器)

    in one of my Flutter project I cannot any longer see a target selector to select the device It is interesting because if
  • Julia:数组是否包含特定的子数组

    在 julia 中 我们可以检查数组是否包含值 如下所示 gt 6 in 4 6 5 true 然而 当尝试按特定顺序检查子数组时 这会返回 false gt 4 6 in 4 6 5 false 验证数组中是否存在特定子数组的正确语法是什
  • 有任何 JQuery Alert() 可以替代 JavaScript 的原生警报吗?

    我想替换原生 JavaScriptalert 与我自己的 这样我就能够控制主题并拥有更多 JQueryUI 外观和感觉 我已经尝试了许多替代方案 JQueryUI Dialog jAlert jqAlert 然而 似乎所有这些都不像原始警报
  • Broadcast 1D array against 2D array for lexsort :在考虑另一个向量时独立对每列进行排序的排列

    考虑数组a np random seed 3 1415 a np random randint 10 size 5 4 a array 0 2 7 3 8 7 0 6 8 6 0 2 0 4 9 7 3 2 4 3 我可以创造b其中包含对每
  • JQuery 和 PHP - 我可以从服务器推送吗?

    我刚刚开始研究 JQuery 到目前为止 一切都是 PHP 只是好奇 如果服务器检测到事件并想要更新用户的浏览器 我可以进行服务器推送 还是客户端必须轮询 客户端必须进行轮询 但你可以这样做长轮询 http en wikipedia org
  • 如何使用 .htaccess 文件阻止 IP 地址范围

    我检测到一系列 IP 地址可能被恶意使用 但我不知道如何阻止它 我想使用 htaccess 文件阻止 66 249 74 范围访问我的网站 你可以使用 Order Allow Deny Deny from 66 249 74 0 24 Al
  • iOS 9 中 UITextView 根据内容的高度是错误的

    我通过编程方式动态地将视图添加到带有布局约束的滚动视图中 对于文本视图组件 我想根据文本视图中设置的文本设置高度约束 所以我创建了扩展 UITextView 的类 在文本视图类中 我编写了以下代码来添加高度约束 import CETextV
  • Matplotlib:更改各个网格线的颜色

    我现在只使用 Python 大约一个月 所以如果有一些我忽略的简单解决方案 我很抱歉 基本上我有一个包含 4 个子图的图 左边的 2 个显示纵向图 右边的显示纵向图某些点的散点图 您可以使用按钮单击纵向图不同点的散点图 当前所在纵向图的刻度
  • 无法在 Windows 10 中完全删除 Cygwin

    我无法删除 Windows 10 设置中的 Cygwin 我缩小了范围 导致问题的文件是C cygwin usr share avogadro crystals zeolites CON cif 就我而言 为什么无法删除cywin目录 文件
  • NextJS Zustand 持久状态

    我有这个 github 仓库 https github com salmanfazal01 next firebase starter https github com salmanfazal01 next firebase starter
  • 如何将我当前位置的地图绘制到特定的纬度经度值

    我使用 android 创建 Google 地图 我获取当前位置的纬度经度值并使用其他一些纬度经度值 现在如何在 2 个位置绘制最短路径线 我的主要 Activity java public class MainActivity exten
  • 如何防止此查询两次打印相同的结果?

    我设法创建了一个适合我需要的查询 但现在我遇到了问题 鉴于当前显示结果的方式 查询将每个结果重复两次 我怎样才能让它在显示一次的地方正常工作 Code sql SELECT DISTINCT contacts contact id user
  • 检查定期 ScheduledFuture 是否正在运行

    我有一个通过 Spring 安排的定期任务TaskScheduler schedule Runnable Trigger 鉴于返回的ScheduledFuture 有什么方法可以检查任务当前是否正在运行 经过一番测试后 public sta
  • 在 ARM 处理器上执行存储在外部 SPI 闪存中的程序

    我有一个 ARM 处理器 能够与外部闪存芯片连接 写入芯片的是为 ARM 架构编译的程序 可供执行 我需要知道如何将这些数据从外部闪存获取到 ARM 处理器上以供执行 我可以提前运行某种复制例程 将数据复制到可执行内存空间吗 我想我可以 但
  • 即使在开始时已经输入,Ansible 同步也会提示密码

    Ansible v1 6 5 的同步模块提示输入密码 Enter passphrase for key 尽管我一开始就已经输入了运行剧本 知道为什么吗 我使用以下选项运行我的剧本 u myuser ask sudo pass private