【发布时间】:2014-05-10 06:58:41
【问题描述】:
目标:给定一个没有安装 python 的 Debian 服务器(以及一些其他缺失的 ansible 先决条件),使用 ansible 来安装它们,这样我就可以使用普通的 ansible 模块(几乎所有这些模块都需要 python)来配置服务器。
根据the ansible documentation for the "script" module,“这个模块不需要远程系统上的python,就像原始模块一样。”。但是,根据我的测试,似乎脚本模块实际上确实尝试在远程系统上运行 python,至少在 sudo 选项为 true 的情况下。我相信只要我不启用 ansible 的 sudo 选项,我就可以让它与脚本模块一起使用,但是我需要我的远程用户在没有密码提示的情况下获得 sudo 权限,否则我的脚本只会挂起等待用于交互式输入 sudo 密码。
所以我的问题是:A)“脚本”模块是怎么回事。是否需要远程系统上的python?
和 B) 是否有更好的方法来实现我的更大目标,即在使用 ansible 之前无需任何手动步骤即可完全自动化部署?
这是我的ansible-playbook -vvv 输出,它清楚地表明它正在远程系统上运行/usr/bin/python,并且那里没有文件,因为尚未安装python。
TASK: [install ansible prerequisites]
***************************************** <10.9.8.31> ESTABLISH
CONNECTION FOR USER: plyons <10.9.8.31> EXEC ['ssh', '-C', '-tt',
'-q', '-o', 'ControlMaster=auto', '-o', 'ControlPersist=60s',
'-o', 'ControlPath=/Users/plyons/.ansible/cp/ansible-
ssh-%h-%p-%r', '-o', 'StrictHostKeyChecking=no', '-o',
'KbdInteractiveAuthentication=no', '-o', 'PreferredAuthentications
=gssapi-with-mic,gssapi-keyex,hostbased,publickey', '-o',
'PasswordAuthentication=no', '-o', 'ConnectTimeout=10',
'10.9.8.31', "/bin/sh -c 'mkdir -p $HOME/.ansible/tmp/ansible-
tmp-1396233547.35-182235573044157 && chmod a+rx $HOME/.ansible/tmp
/ansible-tmp-1396233547.35-182235573044157 && echo
$HOME/.ansible/tmp/ansible-tmp-1396233547.35-182235573044157'"]
<10.9.8.31> PUT
/var/folders/n4/8skjkv9s5hbc4t5r0tr0xrk80000gn/T/tmpT1Vh6e TO
/home/plyons/.ansible/tmp/ansible-
tmp-1396233547.35-182235573044157/stat <10.9.8.31> EXEC ['ssh',
'-C', '-tt', '-q', '-o', 'ControlMaster=auto', '-o',
'ControlPersist=60s', '-o', 'ControlPath=/Users/plyons/.ansible/cp
/ansible-ssh-%h-%p-%r', '-o', 'StrictHostKeyChecking=no', '-o',
'KbdInteractiveAuthentication=no', '-o', 'PreferredAuthentications
=gssapi-with-mic,gssapi-keyex,hostbased,publickey', '-o',
'PasswordAuthentication=no', '-o', 'ConnectTimeout=10',
'10.9.8.31', '/bin/sh -c \'sudo -k && sudo -H -S -p "[sudo via
ansible, key=hyplatqjmvybpfqtukjegkibbuyrnoqj] password: " -u root
/bin/sh -c \'"\'"\'echo SUDO-SUCCESS-
hyplatqjmvybpfqtukjegkibbuyrnoqj; /usr/bin/python
/home/plyons/.ansible/tmp/ansible-
tmp-1396233547.35-182235573044157/stat\'"\'"\'\'']
这是我的剧本任务:
tasks:
-
name: install ansible prerequisites
script: ansible_prereqs.sh creates=/root/.ansible_prereqs_installed
还有那个 ansible_prereqs.sh 脚本:
#!/bin/sh
#install ansible prereqs manually or all apt-based ansible commands will fail
# http://euphonious-intuition.com/2013/01/bootstrapping-a-cluster-with-ansible-debian-6-and-oracle-java-7/
apt-get update
apt-get install -y python python-apt python-pycurl sshpass
touch /root/.ansible_prereqs_installed
【问题讨论】:
标签: ansible