Ansible主要设计用于在远程计算机上运行任务。我想以相反的方式使用它-从一堆机器中提取数据并将其存储在本地。我喜欢设置模块,但现在我有兴趣提取用户列表-设置模块不会向我显示。
此外,我想将此信息添加到mariadb表中。
我可以使用shell模块来执行此项目,但是,我的问题是,还有更好的方法吗?
除非有人可以告诉我更好的做法,否则我将使用shell模块分为两个部分:首先,我将简单地添加/ etc / passwd并注册该输出。然后,执行一个local_action Shell脚本,该脚本调用mysql命令来更新表。
我很想使用标准模块提取数据并在表中插入/更新数据。但是似乎没有模块可以做到。
答案 0 :(得分:2)
您可以使用本地事实。 https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#local-facts-facts-d
如果远程管理系统具有/etc/ansible/facts.d目录,则此目录中以.fact结尾的任何文件都可以是JSON,INI或返回JSON的可执行文件,并且这些文件可以提供Ansible中的本地事实。
然后通过以下代码以json格式获取本地事实:
x = s.recv(1024)
data = json.loads(x.decode('utf8'))
snake = data['snake']
snake2 = data['me']
对于系统用户,您可以编写一个shell脚本,该脚本以json格式返回系统用户,并将此脚本放在/etc/ansible/facts.d下。每次您从这台计算机上收集事实时,您也都拥有这一事实。