【问题标题】:How pass password with Ansible?如何使用 Ansible 传递密码?
【发布时间】:2021-09-12 12:55:57
【问题描述】:

我正在尝试在 Ansible 中运行此任务:

- name: zabbix database
  shell:
    chdir: /usr/share/doc/zabbix-server-mysql-4.0.33/
    cmd:  zcat create.sql.gz | mysql -u muhannad -p zabbix_db

zcat create.sql.gz 运行时需要输入密码,而 Ansible 因为等待输入密码而卡住了,如何从客户端设置密码?

【问题讨论】:

标签: linux command-line ansible


【解决方案1】:

可以使用expect模块指定密码输入。

- name: Provide password 
  expect:
     command: zcat /usr/share/doc/zabbix-server-mysql-4.0.33/create.sql.gz | mysql -u muhannad -p zabbix_db
     responses:
        'password': "{{mysql_password}}"

【讨论】:

    【解决方案2】:

    提示输入密码的不是zcat,而是mysql

    您可以通过-p命令行开关传递密码,例如如果您的密码是mypassword

    mysql -u muhannad -pmypassword zabbix_db
    

    但请注意,这将使您的密码在ps 中可见,除此之外。或者,您可能更喜欢通过环境或my.cnf 指定密码。

    【讨论】:

    • 是的,它来自 MySQL,它可以工作,但是对于命令不支持密码选项?
    【解决方案3】:

    您可以使用 Ansible Vault 来管理敏感数据。

    详细说明请参考official documents of Vault | Ansible Documentation

    创建一个加密(Encrypted)文件。

     $ ansible-vault create foo.yml
    

    编辑加密文件的内容。

    $ ansible-vault edit foo.yml
    

    更改加密密钥(密码)。

    $ ansible-vault rekey foo.yml
    

    加密现有的明文文件

    $ ansible-vault encrypt foo.yml
    

    解密加密文件。

    $ ansible-vault decrypt foo.yml
    

    查看加密文件的内容。

    $ ansible-vault view foo.yml
    

    【讨论】:

      猜你喜欢
      • 2016-08-28
      • 2020-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多