玩 Ansible 虐到自己了! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dynaguy
V2EX    Ansible

玩 Ansible 虐到自己了!

  •  
  •   dynaguy 2017-03-15 07:27:24 +08:00 9160 次点击
    这是一个创建于 3147 天前的主题,其中的信息可能已经有所发展或是发生改变。
    有个目录(内有文件,子目录, link)在控制机上,要复制到目标机上,咋就辣么难呢?

    Playbook:
    - hosts: testvbox
    become: true
    tasks:
    - name: Copy Paraview lib files
    src: /etc/ansible/files/ParaView-5.3.0-Qt5-OpenGL2-MPI-Linux-64bit/lib/
    dest: /usr/local/lib/
    archive: no
    links: yes

    报错:
    TASK [Copy Paraview lib files] *************************************************
    fatal: [192.168.123.165]: FAILED! => {"changed": false, "cmd": "/usr/bin/rsync --delay-updates -F --compress --links --rsh 'ssh -S none -o StrictHostKeyChecking=no' --rsync-path=\"sudo rsync\" --out-format='<<CHANGED>>%i %n%L' \"/etc/ansible/files/ParaView-5.3.0-Qt5-OpenGL2-MPI-Linux-64bit/lib/\" \"[email protected]:/usr/local/lib/\"", "failed": true, "msg": "sudo: no tty present and no askpass program specified\nrsync: connection unexpectedly closed (0 bytes received so far) [sender]\nrsync error: error in rsync protocol data stream (code 12) at io.c(226) [sender=3.1.1]\n", "rc": 12}
    to retry, use: --limit @/etc/ansible/test.retry

    试了 copy 模块也失败了!

    呼唤老司机!
    8 条回复    2017-06-22 00:28:43 +08:00
    hzlez
        1
    hzlez  
       2017-03-15 08:14:34 +08:00
    no tty present and no askpass program specified
    hzlez
        2
    hzlez  
       2017-03-15 08:16:22 +08:00
    @hzlez sorry , 按快了。
    我觉得,这个报错表示就是你的宿主机没权限直接连接到目标机器哇。还没有途径让你去输入密码,就跪了。
    可以考虑把 ssh_key 拷贝到目标机器,这样就不用其他授权方式了。
    你可以试试直接在主机 ssh 到目标机器是不是不行~
    weiweiwitch
        3
    weiweiwitch  
       2017-03-15 10:14:21 +08:00   1
    ansible 有个问题。如果你需要切换到更高权限的账户来执行命令,那么你需要设置 nopasswd 到这个账户,否则会出现你遇到的这种问题。

    比如在 Ubuntu 那种使用 sudo 来执行管理命令的,你需要在 /etc/sudoers 的 sudo 那行改成%sudo ALL=(ALL:ALL) NOPASSWD:ALL

    在 CentOS 那种使用 su 来切换到 root 的。你直接使用 root 来连。
    dynaguy
        4
    dynaguy  
    OP
       2017-03-15 12:00:41 +08:00
    @hzlez
    @weiweiwitch

    其实这个 playbook 前面还有很多 task,都执行了,包括这个:
    - name: Copy Paraview bin files
    copy:
    src: /etc/ansible/files/ParaView-5.3.0-Qt5-OpenGL2-MPI-Linux-64bit/bin/
    dest: /usr/local/bin/

    所以我不认为是权限问题。/usr/local/bin/可以写,而 /usr/local/lib/不能写,那也太诡异了!

    这个成功执行的 copy, src 目录下只有几个文件,没有子目录和 link 。觉得问题在这里,但没有解决办法。愁 ing.

    我会试试 @weiweiwitch 的建议,再报!
    lsj5031
        5
    lsj5031  
       2017-03-15 12:01:52 +08:00
    @weiweiwitch 可以加 --ask-sudo-pass
    nosun
        6
    nosun  
       2017-06-21 15:04:25 +08:00
    遇到同样的问题,@weiweiwitch 的方法试了无效
    nosun
        7
    nosun  
       2017-06-21 15:06:18 +08:00
    @lsj5031 的方法也无效。这种情况只在非 root 用户执行 需要 sudo 的情况下存在。我执行的是 sync 命令。
    dynaguy
        8
    dynaguy  
    OP
       2017-06-22 00:28:43 +08:00
    @nosun 好几个月了,又翻了一下我的解决办法,希望有帮助。

    ```
    - hosts: testvbox
    become: true
    tasks:


    - name: Modify /etc/sudoers
    lineinfile:
    dest: /etc/sudoers
    regexp: '^Defaults env_reset'
    line: 'Defaults env_reset,!tty_tickets'

    - name: Copy Paraview bin files
    synchronize:
    src: /etc/ansible/files/ParaView-5.3.0-Qt5-OpenGL2-MPI-Linux-64bit/bin/
    dest: /usr/local/bin/

    - name: Copy Paraview lib files
    synchronize:
    src: /etc/ansible/files/ParaView-5.3.0-Qt5-OpenGL2-MPI-Linux-64bit/lib/
    dest: /usr/local/lib/
    archive: no
    links: yes
    recursive: yes

    - name: Restore /etc/sudoers
    lineinfile:
    dest: /etc/sudoers
    regexp: '^Defaults env_reset,!tts_tickets'
    line: 'Defaults env_reset'


    ```
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2444 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 05:16 PVG 13:16 LAX 22:16 JFK 01:16
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86