主机:localhost 和连接:本地之间的区别

主机:localhost 和连接:本地之间的区别

可以通过不同的方式实现在本地主机上运行任务。

我不明白下面这两个任务的执行方式是否有区别或者它们是否完全相同。

如果是这样,fakehost那么第二个任务中只是一个占位符,对吗?

- hosts: localhost
  gather_facts: no

  tasks:
  - name: localhost without explicit connection
    boto3_facts:

- hosts: fakehost
  connection: local
  gather_facts: no

  tasks:
  - name: runner host using local connection
    boto3_facts:

答案1

问:“第二个任务中的fakehost只是一个占位符,对吗?”

答:是的。这只是一个别名(占位符)。

使用以下方式运行剧本-vvvv to enable connection debugging。 你会看到的

verbosity: 4
connection: smart

连接插件没有提到smart. 有必要看到来源

ansible/lib/ansible/config/base.yml

DEFAULT_TRANSPORT:
  name: Connection plugin
  default: smart
  description: "Default connection plugin to use, the 'smart' option will toggle
                between 'ssh' and 'paramiko' depending on controller OS and ssh
                versions"

下一步是挖掘源代码,找出 ssh 和 paramiko 如何处理 localhost。(大胆猜测,什么都不做,使用连接local)。


连接插件当地的

“远程用户被忽略,而是使用执行 ansible CLI 的用户。”

让我们添加一个remote_user剧本

shell> cat pb.yml
- hosts: localhost
  gather_facts: no
  remote_user: admin
  tasks:
    - name: localhost without explicit connection
      debug:
        msg:
          - "{{ inventory_hostname }}"
          - "{{ ansible_user }}"

- hosts: fakehost
  gather_facts: no
  connection: local
  remote_user: admin
  tasks:
    - name: runner host using local connection
      debug:
        msg:
          - "{{ inventory_hostname }}"
          - "{{ ansible_user }}"

给出

shell> whoami
vlado
shell> ansible-playbook -i hosts pb.yml

ok: [localhost] => 
  msg:
  - localhost
  - vlado

ok: [fakehost] => 
  msg:
  - fakehost
  - vlado

库存是

shell> cat hosts
fakehost

我认为 Ansible 足够“智能”,能够使用local两种情况下都可以使用连接插件。

相关内容