以下 Ansible 游戏如何工作:
- name: Generate join command
command: kubeadm token create --print-join-command
register: join_command
- name: Copy join command to local file
local_action: copy content="{{ join_command.stdout_lines[0] }}" dest="./join-command"
Run Code Online (Sandbox Code Playgroud)
据我了解,local_action 与 delegate_to 相同,但是 copy content= 没有任何意义。是不是需要指定像“cp”这样的实际命令?
拿这个例子:
local_action: command ping -c 1 {{ inventory_hostname }}
我们可以使用这样的东西:
local_action: command cp content="{{ join_command.stdout_lines[0] }}" dest="./join-command"
lar*_*sks 12
据我了解,local_action 与 delegate_to 相同...
local_action类似于delegate_to: localhost,但因为local_action需要您更改任务的语法,所以最好始终使用delegate_to. 也就是说,对于标准任务,您可以编写:
- name: copy a file
copy:
src: myfile
dest: /path/to/myfile
Run Code Online (Sandbox Code Playgroud)
对于委托的任务,您将使用完全相同的语法并添加以下delegate_to行:
- name: copy a file
delegate_to: localhost
copy:
src: myfile
dest: /path/to/myfile
Run Code Online (Sandbox Code Playgroud)
使用时,local_action您必须更改任务的语法:
- name: copy a file
local_action:
module: copy
src: myfile
dest: /path/to/myfile
Run Code Online (Sandbox Code Playgroud)
复制内容= 没有任何意义。是不是需要指定像“cp”这样的实际命令?
不,copy是 ansible 模块的名称。你可以看到上面的一些例子,或者只是看看文档。
所以看一个例子: local_action: command ping -c 1 {{inventory_hostname }} 我们可以说:
local_action: command cp content="{{ join_command.stdout_lines[0] }}" dest="./join-command"
你应该使用delegate_to,你应该这样写:
- delegate_to: localhost
copy:
content: "{{ join_command.stdout_lines[0] }}"
dest: ./join-command
Run Code Online (Sandbox Code Playgroud)
或者,如果您真的想运行cp命令而不是copy模块,您可以编写如下内容:
- delegate_to: localhost
command: cp some_file another_file
Run Code Online (Sandbox Code Playgroud)
那只是运行标准cp命令,它对content=or一无所知dest=。
| 归档时间: |
|
| 查看次数: |
15699 次 |
| 最近记录: |