当在使用 Ansible 时,如果你想要在执行自己的 playbooks 或者命令时,发现只有使用绝对路径才能被执行,这可能是由于默认环境变量未加载导致的。
为了解决这个问题,你可以在 ansible.cfg
文件中增加以下内容:
[defaults]
command_warnings = False
action_plugins = /usr/share/ansible/plugins/action
library = /usr/share/ansible/plugins/modules
module_utils = /usr/share/ansible/plugins/module_utils
inventory = /etc/ansible/hosts
forks = 50
remote_user = root
transport = smart
这个 Ansible 配置文件默认情况下被放置在 /etc/ansible/ansible.cfg
路径下。
在 ansible.cfg
配置文件中,我们特别需要关注 action_plugins
,library
和 module_utils
这三项配置。这三项都需要使用你系统中的绝对路径。如果你忘记了这些路径,你也可以通过以下方式找到它们。
$ ansible-config dump | grep DEFAULT_A
DEFAULT_ACTION_PLUGIN_PATH(/home/user/.local/lib/python2.7/site-packages/ansible/plugins/action:/usr/share/ansible/plugins/action)
DEFAULT_CACHE_PLUGIN_PATH(/home/user/.ansible/tmp/ansible_cache:/home/user/.ansible/tmp/ansible_cache/ansible_collections:/usr/share/ansible/plugins/cache)
DEFAULT_CALLBACK_PLUGIN_PATH(/home/user/.local/lib/python2.7/site-packages/ansible/plugins/callback:/usr/share/ansible/plugins/callback)
DEFAULT_CONNECTION_PLUGIN_PATH(/usr/share/ansible/plugins/connection:/home/user/.local/lib/python2.7/site-packages/ansible/plugins/connection)
DEFAULT_FACTS_MODULE_PATH(/home/user/.local/lib/python2.7/site-packages/ansible/plugins/facts:/usr/share/ansible/plugins/facts)
DEFAULT_FILTER_PLUGIN_PATH(/home/user/.local/lib/python2.7/site-packages/ansible/plugins/filter:/usr/share/ansible/plugins/filter)
DEFAULT_GATHERING_PLUGIN_PATH(/home/user/.local/lib/python2.7/site-packages/ansible/plugins/gathering:/usr/share/ansible/plugins/gathering)
DEFAULT_HOST_LIST(/etc/ansible/hosts)
DEFAULT_HOST_KEY_CHECKING(True)
DEFAULT_INVENTORY(/etc/ansible/hosts)
DEFAULT_LIBRARY(/home/user/.ansible/plugins/modules:/usr/share/ansible/plugins/modules)
DEFAULT_LOOKUP_PLUGIN_PATH(/home/user/.local/lib/python2.7/site-packages/ansible/plugins/lookup:/usr/share/ansible/plugins/lookup)
DEFAULT_MODULE_UTILS(/usr/share/ansible/plugins/module_utils)
DEFAULT_PRIVATE_KEY_FILE(/home/user/.