ansible_fqdn
时间: 2023-12-17 17:28:56 浏览: 172
`ansible_fqdn`是Ansible中的一个事实(fact),它代表主机的完全限定域名(Fully Qualified Domain Name)。可以通过在目标主机上运行`ansible -m setup`命令来查看所有可用的事实。以下是一个示例命令,用于仅显示`ansible_fqdn`事实:
```shell
ansible <your_host> -m setup -a 'filter=ansible_fqdn'
```
该命令将返回一个JSON格式的输出,其中包含有关目标主机的信息,包括`ansible_fqdn`事实。
相关问题
编写playbook,实现安装配置httpd服务,使用模板生成httpd的主页文件/var/www/html/index.html主页显示的内容是Welcome to {{ ansible_fqdn }} on {{ ansible_default_ipaddress }}。
以下是一个实现安装配置httpd服务并使用模板生成主页文件的Playbook:
```yaml
---
- name: Install and configure httpd
hosts: all
become: true
tasks:
- name: Install httpd
yum:
name: httpd
state: present
- name: Start httpd and enable at boot
service:
name: httpd
state: started
enabled: yes
- name: Configure firewall for httpd
firewalld:
service: http
permanent: true
state: enabled
immediate: true
- name: Generate index.html file
template:
src: templates/index.html.j2
dest: /var/www/html/index.html
```
在此Playbook中,我们首先使用`yum`模块安装httpd。然后,我们使用`service`模块启动httpd并将其设置为开机启动。接下来,我们使用`firewalld`模块配置防火墙以允许http流量。最后,我们使用`template`模块从模板文件`index.html.j2`生成主页文件,并将其放置在`/var/www/html/index.html`位置。
以下是`index.html.j2`模板文件的内容:
```html
<html>
<head>
<title>Welcome to {{ ansible_fqdn }} on {{ ansible_default_ipv4.address }}</title>
</head>
<body>
<h1>Welcome to {{ ansible_fqdn }} on {{ ansible_default_ipv4.address }}</h1>
</body>
</html>
```
该模板文件中,我们使用了`{{ ansible_fqdn }}`和`{{ ansible_default_ipv4.address }}`变量,这些变量分别对应主机的完全域名和IP地址,并将它们插入到HTML文件中。
ansible_nodename 和 ansible_facts.nodename 的区别
`ansible_nodename` 和 `ansible_facts.nodename` 都与 Ansible 中主机名相关,但它们在工作原理和用途上有所不同:
1. `ansible_nodename`: 这是一个变量,通常在 Ansible playbooks 或任务的执行过程中可用。当你直接引用这个变量时,它会尝试获取目标机器的当前主机名。如果尚未获取到或有变动,这个值可能会暂时缺失。
2. `ansible_facts.nodename`: 这是Ansible事实(Facts)的一部分,是一个结构化的数据集合,包含了关于目标机器的各种详细信息,包括主机名。在执行 `ansible-galaxy collection install`、`ansible-inventory` 等操作后,或执行了某些事实收集模块如 `setup` 模块,`nodename` 就会被填充并保存在 `ansible_facts` 中,作为持久的、可靠的数据来源。
简而言之,`ansible_nodename` 更像是一种即时的尝试获取主机名的行为,而 `ansible_facts.nodename` 则是在处理完成后存储的事实结果。如果你需要访问稳定的主机名称,应优先考虑使用 `ansible_facts.nodename`。
阅读全文