以下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"
据我所知,local_action与委托_to相同 但是,复制content =没有任何意义。不需要指定“ cp”之类的实际命令吗?
所以看一个例子:
local_action: command ping -c 1 {{ inventory_hostname }}
我们可以说:
local_action: command cp content="{{ join_command.stdout_lines[0] }}" dest="./join-command"
答案 0 :(得分:0)
很难说出 dest =“ ./ join-command” 的路径是什么。完整路径按预期工作。
例如:
dest="{{ playbook_dir }}/join-command"
答案 1 :(得分:0)
据我所知,local_action与委托_to相同...
local_action
与delegate_to: localhost
类似,但是由于local_action
要求您更改任务的语法,因此最好始终使用delegate_to
。也就是说,对于标准任务,您可以编写:
- name: copy a file
copy:
src: myfile
dest: /path/to/myfile
对于委派任务,您将使用完全相同的语法,并添加delegate_to
行:
- name: copy a file
delegate_to: localhost
copy:
src: myfile
dest: /path/to/myfile
使用location_action
时,您必须更改任务的语法:
- name: copy a file
local_action:
module: copy
src: myfile
dest: /path/to/myfile
copy content =没有任何意义。不需要指定“ cp”之类的实际命令吗?
否,copy
是ansible模块的名称。您可以看到上面的一些示例,或者只看documentation。
所以看一个例子:local_action:命令ping -c 1 {{库存主机名}}我们可以说:
local_action:命令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
或者,如果您实际上想运行cp
命令而不是copy
模块,则可以编写以下内容:
- delegate_to: localhost
command: cp some_file another_file
那只是运行标准的cp
命令,而该命令对content=
或dest=
一无所知。