Python 卡桑德拉:找不到

Python 卡桑德拉:找不到,python,cassandra,ansible,Python,Cassandra,Ansible,我使用pip安装cassandra_snapshotter安装了cassandra snapshotter。如果我用命令在终端上运行它,它工作正常 sudo cassandra-snapshotter --s3-bucket-name=vivek-bucket --s3-base-path=cassandra --aws-access-key-id=XXXX --aws-secret-access-key=XXX backup --hosts=172.31.2.85 --user ubunt

我使用
pip安装cassandra_snapshotter
安装了cassandra snapshotter。如果我用命令在终端上运行它,它工作正常

sudo cassandra-snapshotter --s3-bucket-name=vivek-bucket 
--s3-base-path=cassandra --aws-access-key-id=XXXX --aws-secret-access-key=XXX backup --hosts=172.31.2.85  --user ubuntu
--sshkey=/home/ubuntu/XXXX.pem --cassandra-conf-path=/etc/dse/cassandra --use-sudo=yes --new-snapshot
当我用ansible尝试相同的命令时,它以错误结束

“开始”:“2017-04-25 10:02:39.111333”, “stderr”:“/bin/sh:1:cassandra快照器:未找到”, “标准线”:[ “/bin/sh:1:cassandra快照器:未找到” ]



pip在自己的位置安装可执行文件。该位置可能不在搜索路径中。您可以在ansible中设置PATH环境变量并将其扩展以包括该位置,也可以在命令行上手动执行“which cassandra_snapshotter”,并将cassandra_snapshotter可执行文件的完整路径放入ansible中


另外:我不认为您在cassandra_snapshotter调用中使用了任何“shell”功能。如果可能的话最好使用。

我也试过了。它在/home/ubuntu/.local/bin中,如果我在可执行文件中给出它,它的权限将被拒绝。但我在sudo模式下运行ansible。我使用shell,因为命令给出了没有可执行文件的“[Errno 2]没有这样的文件或目录”。即使现在更改为命令并添加可执行文件后,某些权限仍被拒绝。您能帮我解决这个权限被拒绝的问题吗?@BerndWell甚至连root都必须强制设置文件权限。我不知道为什么它会出现在home目录中,但我猜你是在用户ubuntu的时候安装cassandra_snapshotter的
pip,而pip(现在)只在用户home目录中安装pkg。这也解释了为什么它不在root用户路径中。您可以更改文件和dirs权限,也可以作为root用户重新执行该pip命令。我强烈建议第二种。
- name: snapshot and backup 
  hosts: localhost
  connection: local 
  become: yes    
  tasks:
       - name: taking snapshot
         shell: cassandra-snapshotter --s3-bucket-name=vivek-bucket --s3-base-path=cassandra --aws-access-key-id=XXXX --aws-secret-access-key=XXX backup --hosts=172.31.2.85  --user ubuntu --sshkey=/home/ubuntu/XXXX.pem --cassandra-conf-path=/etc/dse/cassandra --use-sudo=yes --new-snapshot