[步骤] Linux 光纤号的显示

步骤一:显示有哪些光纤号

# lspci | grep -i fibre

步骤二:显示光纤号有哪些配置文件

# ls /sys/class/fc_host/
host1  host2  host3  host4

步骤三:显示光纤号配置文件里对应 FC HBA 卡的 WWN 信息

# cat /sys/class/fc_host/host[1-4]/port_name

步骤四:显示光纤的状态

4.1 光纤正常在线的情况

# cat /sys/class/fc_host/host5/port_state
online

4.2 光纤不正常或者不在线的情况

# cat /sys/class/fc_host/host7/port_state
linkdown

[内容] 静态路由表的添加(CentOS Linux & RHEL 版)

内容一:临时路由器表到管理

1.1 案例一:添加某个 IP 地址的路由表

# route add -host 192.168.2.1 netmask 255.255.255.255 gw 192.168.1.1 dev eth0

或者:

# ip route add 192.168.2.1/32 via 192.168.1.1 dev eth0

(补充:这里以指向 192.168.2.1 IP 地址的流量需要通过 eth0 网卡和 192.168.1.1 网关 IP 地址为例)

1.2 案例二:删除某个 IP 地址的路由表

# route del -host 192.168.2.1

(补充:这里删除 192.168.2.1 IP 地址的路由表为例)

# ip route del 192.168.2.1/32 via 192.168.1.1 dev eth0

(补充:这里删除 192.168.2.1 IP 地址导向 192.168.1.1 IP 地址的路由表为例)

1.3 案例三:添加某个网段的路由表

# route add -net 192.168.2.0 netmask 255.255.255.0 gw 192.168.1.1

(补充:这里以指向 192.168.2.0/24 网段的流量需要通过 192.168.1.1 网关 IP 地址为例)

或者:

# ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0

(补充:这里以指向 192.168.2.0/24 网段的流量需要通过 192.168.1.1 eth0 网关 IP 地址为例)

1.4 案例四:删除某个网段的路由表

# route del -net 192.168.2.0/24

(补充:这里删除 192.168.2.0/24 网段的路由表为例)

或者:

# ip route del 192.168.2.0/24 via 192.168.1.1 dev eth0

(补充:这里以指向 192.168.2.0/24 网段的流量需要通过 192.168.1.1 eth0 网关 IP 地址为例)

内容二:添加永久路由表

2.1 添加永久路由表

2.1.1 案例一
# nmcli con mod eth0 ipv4.routes "192.168.2.0/24 192.168.3.1"

(补充:这里以给 eth0 网卡添加 192.168.2.0/24 通过 192.168.3.1 的网关 IP 地址为例)

2.1.2 案例二
# vim /etc/sysconfig/network-scripts/route-enp1s0

创建以下内容:

192.168.100.3/32 via 192.168.101.101 dev enp1s0

(补充:这里以添加 192.168.100.3/32 通向 192.168.101.101 网关的永久路由为例)

2.2 启动要添加路由表的网卡

2.2.1 启动要添加路由表的网卡的格式
# nmcli connection up <the name of the network card to add the routing table to>

或者:

# reboot
2.2.2 启动要添加路由表的网卡的案例
# nmcli connection up enp1s0

或者:

# reboot

(补充:这里以重启名为 enp1s0 网卡为例)

[内容] Ansible 魔法变量

注意:

在使用 Ansible 魔法变量之前,要先安装 Ansible、添加被 Ansible 管理的主机,并且需要 root 权限

正文:

内容一:Ansible 常用魔法变量

1) inventory_hostname

显示服务器名


2) group_names

显示服务器所在组


3) groups

显示服务器所在组,以及组里的所有服务器


4) hostvars

显示所有相关信息

内容二:Ansible 魔法变量的使用

2.1 在命令行使用魔法变量

2.1.1 魔法变量的使用格式
# ansible <Ansible server name or Ansible group name> -m debug -a var=<Ansible magic variable name>
2.1.2 魔法变量的使用案例
2.1.2.1 显示所有魔法变量
# ansible -m debug -a var=hostvars all

(补充:这里以显示所有服务器上的所有魔法变量为例)

2.1.2.2 显示某 1 个魔法变量
# ansible -m debug -a var=inventory_hostname all

(补充:这里以显示所有服务器上的 inventory_hostname 魔法变量为例)

2.2 在 Ansible Playbook 使用魔法变量

2.2.1 在 Ansible Playbook 的变量中使用魔法变量
# vim test.yml
---
- name: test
  hosts: all
  vars:
    server_all:
    - server_name: IP_ADDRESS
      server_cont: "{{ ansible_default_ipv4.address }}"
    - server_name: HOST_NAME
      server_cont: "{{ inventory_hostname }}"
  tasks:
......


补充:这里以
1) 在 test.yml 中,
2) 创建 1 个名为 test,
3) 在所有服务器上执行,
4) 创建名为 server_all 的变量数组,
5) 里面有名为 IP_ADDRESS 的 IP 地址事实变量和名为 HOST_NAME 的服务器名称版本事实变量,
的 playbook 为例

2.2.2 在 Ansible Playbook 的条件判断 when 中使用魔法变量
2.2.2.1 案例一:使用 1 个魔法变量
# vim test.yml

添加以下内容:

......
when: "'test' in group_names"
......

(补充:这里以在 test.yml 中, test 为服务器的所属组为条件判断为例)

2.2.2.2 案例二:使用 2 个魔法变量
# vim test.yml

添加以下内容:

......
when: inventory_hostname in groups.test
......

(补充:这里以在 test.yml 中,服务器名在 test 组中为条件判断为例)

2.3 在 JSON 文档上使用魔法变量

2.3.1 在 JSON 文档上使用魔法变量
# vim hosts.j2

创建以下内容:

{% for host in groups['all'] %}
{{ hostvars[host]['ansible_facts']['hostname'] }} {{ hostvars[host]['ansible_facts']['default_ipv4']['address'] }}
{% endfor %}

(补充:这里以创建所有服务器名和 IP 地址对应的关系,名为 hosts.j2 的 json 文件为例)

2.3.2 使用 JSON 文档的 Playbook
# vim test.yml

添加以下内容:

......
  - name: template
    template:
      src: hosts.j2
      dest: /root/hosts.txt
......

(补充:这里以在 test.yml 中,使用 hosts.j2 创建 /root/hosts.txt 为例)

[内容] Ansible 自定义变量

注意:

在使用 Ansible 自定义变量之前,要先安装 Ansible、添加被 Ansible 管理的主机,并且需要 root 权限

正文:

内容一:Ansible 全局变量的使用

# ansible dev -m shell -a whoami -e ansible_user=root -e ansible_password=redhat

(补充:这里以 root 是管理被管理服务器所使用的用户,redhat 是这个用户的密码为例)

内容二:Ansible 服务器列表变量的设置

2.1 给某台服务器设置变量的案例

# vim host

创建以下内容:

[web]
192.168.1.1 ansible_password=root


补充:这里以
1) 在 host 文件里
2) 设置 192.168.1.1 的 Ansible 密码是 root(当它被 Ansible 操作时需要输入此密码)
为例

2.2 给某 1 个组设置变量的案例

# vim host

创建以下内容:

[web]
192.168.1.1
192.168.1.2 
192.168.1.3 

[web:vars]
ansible_user=root
ansible_password=root
......


补充:这里以
1) 在 host 文件里
2) 设置 web 组的 Ansible 用户是 root,密码是 root(当它们被 Ansible 操作时需要输入此密码)
为例

2.3 给所有服务器设置变量的案例

# vim host

创建以下内容:

[web]
192.168.1.1
192.168.1.2
192.168.1.3

[db]
192.168.1.4
192.168.1.5
192.168.1.6

[all:vars]
ansible_user=root
ansible_password=root
......


补充:这里以
1) 在 host 文件里
2) 设置所有服务器的 Ansible 用户是 root,密码是 root(当它们被 Ansible 操作时需要输入此密码)
为例

内容三:Ansible Playbook 变量的设置

3.1 Ansible Playbook 直接设置变量的案例

# vim test.yaml

创建以下内容:

---
- name: test
  hosts: all
  vars:
    user: tom
    home: /home/joe
  tasks:
  - name: Add a user
    user:
      name: "{{ user }}"
      comment: name is {{ user }}
......


补充:这里以
1) 在 test.yml 中
2) 创建一个名为 test
3) 在所有服务器上执行
4) 设置 user 变量为 tom
5) home 变量为 /home/joe
6) 创建名为 user 注释内容为 user 的用户
的 playbook 为例

3.2 Ansible Playbook 直接设置数组变量的案例

# vim test.yaml

创建以下内容:

---
- name: test
  hosts: all
  vars:
  - user1:
      a_name: zhang
      b_name: san
  - user2:
      a_name: li
      b_name: si
  tasks:
  - name: Add a user
    user:
      name: "{{ users.user1.a_name }}{{ users.user1.b_name }}"
......


补充:这里以
1) 在 test.yml 中
2) 创建 1 个名为 test
3) 在所有服务器上执行
4) 导入了变量文件 vars.yaml
5) 使用其中的变量 users.user1.a_name 和 users.user1.b_name
的 playbook 为例

3.3 Ansible Playbook 设置变量文件的案例

3.3.1 创建变量文件
# vim vars.yaml

创建以下内容:

user: tom
home: /home/joe

(补充:这里以在 vars.ymal 中添加变量 user 值为 tom,变量 home 值为 /home/joe 为例)

3.3.2 导入变量文件
# vim test.yaml

创建以下内容:

---
- name: test
  hosts: all
  vars_files:
    - vars.yaml
  tasks:
  - name: Add a user
    user:
      name: "{{ user }}"
      comment: name is {{ user }}
......


补充:这里以
1) 在 test.yml 中
2) 创建 1 个名为 test
3) 在所有服务器上执行
4) 导入了变量文件 vars.yaml
5) 使用其中的变量 user 和 home
的 playbook 为例

3.4 Ansible Playbook 设置数组变量文件的案例

3.4.1 创建变量文件

# vim vars.yaml

创建以下内容:

users:
  user1:
    a_name: san
    b_name: zhang
    c_name: /home/zhangsan
  user2:
    a_name: si
    b_name: li
    c_name: /home/lisi

(补充:这里以在 vars.ymal 中添加 user1 和 user2 两组数组变量为例)

3.4.2 导入变量文件

# vim test.yaml

创建以下内容:

---
- name:
  hosts:
  vars_files:
  - vars.yaml
  tasks:
  - name: Add a user
    user:
      name: "{{ users.user1.a_name }}{{ users.user1.b_name }}"
......


补充:这里以
1) 在 test.yml 中
2) 创建 1 个名为 test
3) 在所有服务器上执行
4) 导入了变量文件 vars.yaml
5) 使用其中的变量 users.user1.a_name 和 users.user1.b_name
的 playbook 为例