如何通过ansible剧本交互式安装脚本

时间:2019-07-13 01:43:07

标签: shell ansible

我可以在Linux服务器上使用命令行参数运行脚本,

例如:./install.sh -n -I <IP address of the server>

上面的命令能够在服务器上安装脚本。

当我尝试使用shell模块通过ansible(版本2.5)剧本进行操作时,它给了我一个参数错误。

  - name: Running the script
     shell: yes | ./fullinstall

期望模块已尝试。

--my-arg1=IP address

2 个答案:

答案 0 :(得分:1)

- shell: "./install.sh -n -I"
  args: 
    chdir: somedir/
    creates: somelog.txt

您可以查看here作为示例。

您还可以将 install.sh 文件作为模板放置在服务器上。然后,您可以在Jinja2中根据需要设置变量。

- name: Template install.sh
  template:
    src: /install.sh.j2
    dest: /tmp/install.sh

- shell: "cd /tmp/ ; ./install.sh

您的install.sh.j2包含:

IP adres: {{ my_ip }}

并在命令行上使用以下命令设置变量:

ansible-playbook -e my_ip="192.168.0.1"

答案 1 :(得分:0)

使用命令模块

- name: run script 
  command: /path/to/install.sh -n -I {{ ip_addrress }}

剧本

ansible-playbook -e ip_address="192.168.3.9" play.yml

如果要交互式地输入IP地址,请使用prompt模块。