首页 > 其他分享 >ansible的host几种编写样式以及引用方式

ansible的host几种编写样式以及引用方式

时间:2023-10-10 14:47:47浏览次数:44  
标签:name 样式 state nginx host ansible ssh 模块

借用的,

https://www.cnblogs.com/chengxuyonghu/p/13763561.html

Ansible hosts文件配置IP的方式

第一种 IP+A/C

示例如下:
192.168.0.10 ansible_ssh_user=“vagrant” ansible_ssh_pass=“vagrant”

第二种 nickname+IP+A/C

testserver ansible_ssh_host=192.168.0.10 ansible_ssh_user=“vagrant” ansible_ssh_pass=“vagrant”

第三种 nickname+IP+Account+节点私有key

testserver ansible_ssh_host=192.168.0.10 ansible_ssh_user=“vagrant” ansible_private_key_file=./vagrant/machines/default/virtual/private_key

第四种 IP

192.168.0.10
注:这种方式需要先用ssh-keygen命令(回车三次)生成管理主机的public key
然后把key用命令ssh-copy-id -i 发送到节点主机上去才能起作用。
示例:
ssh-copy-id -i “/home/vagrant/.ssh/id_rsa.pub” [email protected]

 

 

1、正常写法,name1为别名:
[test1]
name1 ansible_ssh_host=192.168.1.111 ansible_ssh_user="root" ansible_ssh_pass="1234" ansible_ssh_port=22


name2 ansible_ssh_host=192.168.1.222  ansible_ssh_user="root" ansible_ssh_pass="1234" ansible_ssh_port=22

 

2、连续的IP写法,表示192.168.1.20到192.168.1.50,共31台主机:
[test1]


name1 ansible_ssh_host=192.168.1.[20:50] ansible_ssh_user="root" ansible_ssh_pass="1234" ansible_ssh_port=22

 

3、带参数的群组,vars底下为群组共同便变量,包括已定义变量和自定义变量:
[test1]
name1 ansible_ssh_host=192.168.1.[20:50]

[test1:vars]
ansible_ssh_user=root
ansible_ssh_pass="1234"
testvar="test"

 

4、群组整合,children底下为父群组test的子群组,调用方式为ansible test -m ping:


[dbtest]
name1 ansible_ssh_host=192.168.1.[20:50] ansible_ssh_user="root" ansible_ssh_pass="1234" ansible_ssh_port=22
[webtest]


name2 ansible_ssh_host=192.168.2.[20:50] ansible_ssh_user="root" ansible_ssh_pass="1234" ansible_ssh_port=22
[test:children]
dbtest
webtest

 

5、调用两个主机组的写法,以下webservers和dbservers都会被调用:


ansible webservers:dbservers -m ping

 

6、在webservers组中但不在dbsersers中的调用:


ansible webservers:!dbservers -m win_ping

 

7、在webservers组中并且在dbservers组中的才会调用:
ansible webservers:&dbservers -m ping

 

8、在调用前加~,代表正则表达式:


ansible ~(web|db).*.91it.org -m win_ping

 

9、组合的例子:
webserver:dbservers:&nginx:!ntp

 

10、hosts文件中没有定义的IP或别名,在进行调用中,会提示错误。ansible对单台服务器的调用,服务器IP或域名必须有写在hosts里

 

11、ansible配置文件
在配置文件里面配置用户和端口,就可以不要在host里面配置指定里
ansible 有许多参数,下面我们列出一些常见的参数:

inventory = /etc/ansible/hosts #这个参数表示资源清单inventory文件的位置


library = /usr/share/ansible #指向存放Ansible模块的目录,支持多个目录方式,只要用冒号(:)隔开就可以


forks = 5 #并发连接数,默认为5


sudo_user = root #设置默认执行命令的用户


remote_port = 22 #指定连接被管节点的管理端口,默认为22端口,建议修改,能够更加安全


host_key_checking = False #设置是否检查SSH主机的密钥,值为True/False。关闭后第一次连接不会提示配置实例


timeout = 60 #设置SSH连接的超时时间,单位为秒


log_path = /var/log/ansible.log #指定一个存储ansible日志的文件(默认不记录日志)

 

 

 

 

Ansible执行命令过程:

  • 加载自己的配置文件 默认/etc/ansible/ansible.cfg
  • 加载自己对应的模块文件,如command
  • 通过ansible将模块或命令生成对应的临时py文件,并将该文件传输至远程服务器的对应执行用户
  • $HOME/.ansible/tmp/ansible-tmp-数字/XXX.PY文件
  • 给文件+x执行
  • 执行并返回结果
  • 删除临时py文件,sleep 0退出

Ansible命令工具:

  • ansible主程序,临时命令执行工具
  • ansible-doc 查看配置文档,模块功能查看工具
  • ansible-galaxy 下载/上传优秀代码或Roles模块的官网平台
  • ansible-playbook 定制自动化任务,编排剧本工具
  • ansible-pull 远程执行命令的工具
  • ansible-vault 文件加密工具
  • ansible-console 基于Console界面与用户交互的执行工具

Ansible常用模块:

ansible 默认提供了很多模块来供我们使用。

在 Linux 中,我们可以

 

通过 ansible-doc -l 命令查看到当前 ansible 都支持哪些模块

 

通过 ansible-doc -s 模块名 又可以查看该模块有哪些参数可以使用。

 

 为了更好规范定义的主机与组变量,

Ansible支持 将/etc/ansible/hosts定义的主机名与组变量单独剥离出来存放到指定的文件中,将采用YAML格式存放,

存放位置规定:“/etc/ansible/group_vars/+组名”和“/etc/ansible/host_vars/+主机名”分别存放指定组名或主机名定义的变量

 

 

 

 

 

ping 模块 yum 模块 copy 模块 file 模块 service 模块 user 模块 group模块 cron 模块 template 模块 setup 模块 fetch 模块 apt 模块 command 模块 shell 模块 script 模块

yum 安装包模块

yum安装vsftpd包:(默认state=installd) ansible all -m yum -a 'name=vsftpd' 安装多个包用逗号隔开: ansible all -m yum -a 'name=vsftpd,httpd' 显示所有已安装的包: ansible all -m yum -a 'name=vsftpd list=installd' 卸载vsftpd包: ansible all -m yum -a 'name=vsftpd state=removed' 安装从互联网下载的包: ansible srv -m copy -a 'src=/root/package.rpm dest=/data/package' ansible srv -m yum -a 'name=/data/package.rpm' 更新缓存: ansible srv -m yum -a 'update_cache=yes' 更新缓存同时安装dstat包 ansible srv -m yum -a 'name=dstat update_cache=yes'

参数详解:

- config_file:yum的配置文件 (optional)

- disable_gpg_check:关闭gpg_check (optional)

- disablerepo:不启用某个源 (optional)

- enablerepo:启用某个源(optional)

- name:要进行操作的软件包的名字,默认最新的程序包,指明要安装的程序包,可以带上版本号,也可以传递一个url或者一个本地的rpm包的路径

- state:状态(present,absent,latest),表示是安装还卸载
       present:默认的,表示为安装
       lastest: 安装为最新的版本
       absent:表示删除

 

copy 复制文件模块

ansible srv -m copy -a "src=/root/f1.sh dest=/tmp/f2.sh mode=600 backup=yes"   如目标存在,默认覆盖,此处指定先备份 ansible srv -m copy -a "content='test content\n' dest=/tmp/f1.txt"   利用内容,直接生成目标文件

参数详解:

- update_cache: 更新缓存

- name: 要创建的文件名字

- state: 状态(present,absent,latest),表示是安装还卸载
   present:默认的,表示为安装
   lastest: 安装为最新的版本
   absent:表示删除
- mode: 目标文件的权限模式,模式可以被指定为符号模式(例如,u + rwx 或 u = rw,g = r,o = r)

- backup: 如果原目标文件存在,则先备份目标文件

- force: 是否强制覆盖,默认为yes

- owner: 目标文件属主

- group: 目标文件属组

file 文件操作模块

创建新文件: ansible all -m file -a 'name=/data/f3 state=touch'

删除文件: ansible all -m file -a 'name=/data/f3 state=absent'

创建目录: ansible all -m file -a 'name=/data/dir1 state=directory'

删除目录: ansible all -m file -a 'name=/data/dir1 state=absent'

创建软连接: ansible all -m file -a 'src=/etc/fstab dest /data/fstab.link state=link'

删除软连接: ansible all -m file -a 'dest /data/fstab.link state=absent'

创建文件指定所有者,权限: ansible srv -m file -a "path=/root/a.sh owner=wang mode=755" ansible web -m file -a 'src=/app/testfile dest=/app/testfile-link state=link'

参数详解:

- force:需要在两种情况下强制创建软链接,一种是源文件不存在但之后会建立的情况下;另一种是目标软链接已存在,需要先取消之前的软链,然后创建新的软链,有两个选项:yes|no

- group:定义文件/目录的属组

- mode:定义文件/目录的权限

- owner:定义文件/目录的属主

- path:必选项,定义文件/目录的路径

- recurse:递归的设置文件的属性,只对目录有效

- src:要被链接的源文件的路径,只应用于state=link的情况

- dest:被链接到的路径,只应用于state=link的情况

- state:
   directory:如果目录不存在,创建目录
   file:即使文件不存在,也不会被创建
   link:创建软链接
   hard:创建硬链接
   touch:如果文件不存在,则会创建一个新的文件,如果文件或目录已存在,则更新其最后修改时间
   absent:删除目录、文件或者取消链接文件

 

service 管理服务模块

复制代码 开启httpd服务: ansible srv -m service -a 'name=httpd state=started’     重新加载httod服务: ansible srv -m service -a 'name=httpd state=reloaded’   重启httpd服务: ansible srv -m service -a 'name=httpd state=restarted’       开启ftp服务,同时设置开机自动启动: ansible srv -m service -a 'name=vsftpd state=started enabled=yes’     重启ftp服务: ansible srv -m service -a 'name=vsftpd state=restarted' 复制代码

参数详解:

- arguments:给命令行提供一些选项

- enabled:是否开机启动 yes|no, 要求状态(state)和启用(enabled)中至少有一个。

- name:必选项,服务名称

- runlevel:运行级别

- sleep:如果执行了restarted,在则stop和start之间沉睡几秒钟

- state:对当前服务执行启动,停止、重启、重新加载等操作(started,stopped,restarted,reloaded)

 

user 管理用户模块

 

添加用户,指定uid、家目录、主组及注释: ansible srv -m user -a 'name=user1 comment="test user" uid=2048 home=/app/user1 group=root'

添加一个系统用户: ansible srv -m user -a 'name=sysuser1 system=yes home=/app/sysuser1'

删除用户: ansible srv -m user -a 'name=user1 state=absent'

添加一个nginx用户: ansible srv -m user -a 'name=nginx shell=/sbin/nologin system=yes home=/var/nginx groups=root,bin uid=80 comment="nginx service"

删除nginx用户,同时删除家目录: ansible srv -m user -a 'name=nginx state=absent remove=yes'

参数详解:

- home:指定用户的家目录,需要与createhome配合使用。

- groups:指定用户的属组。

- uid:指定用的uid。

- password:指定用户的密码。
注意:指定password参数时,不能使用明文密码,因为后面这一串密码会被直接传送到被管理主机的/etc/shadow文件中,所以需要先将密码字符串进行加密处理。然后将得到的字符串放到password中即可。

- name:指定用户名。

- createhome:是否创建家目录 yes|no。

- system:是否为系统用户。

- remove:当state=absent时,remove=yes则表示连同家目录一起删除,等价于userdel -r。

- state:是创建还是删除。(present,absent)

- shell:指定用户的shell环境。

- generate_ssh_key:是否为相关用户生成SSH密钥。 这不会覆盖现有的SSH密钥。

- ssh_key_bits:可选择指定要创建的SSH密钥中的位数。

- ssh_key_passphrase:设置SSH密钥的密码。 如果没有提供密码,SSH密钥将默认没有密码。

- ssh_key_file:指定SSH密钥文件名(可选)。 如果这是一个相对的文件名,那么它将是相对于用户的主目录。

- ssh_key_type:指定要生成的SSH密钥的类型(可选)。 可用的SSH密钥类型将取决于目标主机上的实现。

group管理组模块

 

创建一个系统组: ansible srv -m group -a "name=testgroup system=yes"

删除一个组: ansible srv -m group -a "name=testgroup state=absent"

创建nginx组: ansible srv -m group -a 'name=nginx system=yes gid=80'

删除nginx组: ansible srv -m group -a 'name=nginx state=absent'

 

参数详解:

- gid:指定用的gid。

- name:指定用户名。

- state:是创建还是删除。(present,absent)

- system:如果是,则表示创建的组是系统组。

 

cron 计划任务模块

支持时间:minute,hour,day,month,weekday

 

创建计划任务:每周1,3,5,每分钟打印,任务名称:warningcron ansible all -m cron -a 'minute=* weekday=1,3,5 job="/usr/bin/wall FBI warning" name=warningcron'

注释cronname=waringcron的计划任务: ansible all -m cron -a 'disabled=true job="/usr/bin/wall FBI warning" name=warningcron'

给cronname=waringcron的计划任务去掉注释: ansible all -m cron -a 'disabled=true job="/usr/bin/wall FBI warning" name=warningcron'

创建计划任务:每五分钟同步一次服务器时间,任务名称:syntime ansible srv -m cron -a "minute=*/5 job='/usr/sbin/ntpdate 172.16.0.1 &>/dev/null' name=Synctime"

删除计划任务:Synctime ansible srv -m cron -a 'state=absent name=Synctime'

 

template模块

基于模板方式生成一个文件复制到远程主机(template使用Jinjia2格式作为文件模版,进行文档内变量的替换的模块。它的每次使用都会被ansible标记为”changed”状态。)

参数详解:

- backup: 如果原目标文件存在,则先备份目标文件

- src:在ansible控制器上的Jinja2格式化模板的路径。 这可以是相对或绝对的路径。

- dest:将模板渲染到远程机器上的位置。

- force:是否强制覆盖,默认为yes

- owner:目标文件属主

- group:目标文件属组

- mode:目标文件的权限模式,模式可以被指定为符号模式(例如,u + rwx或u = rw,g = r,o = r)。

 

setup模块

收集指定服务器的信息,每个被管理节点在接收并运行管理命令之前,会将自己主机相关信息,如操作系统版本、IP地址等报告给远程的ansbile主机。在playbooks里经常会用到的一个参数gather_facts就与该模块相关。setup模块下经常使用的一个参数是filter参数,具体使用示例如下:

 

ansible all -m setup -a "filter=ansible_os_family"

这里给出filter常用可选项:

ansible_all_ipv4_addresses:仅显示ipv4的信息

ansible_devices:仅显示磁盘设备信息

ansible_distribution:显示是什么系统,例:centos,suse等

ansible_distribution_major_version:显示是系统主版本

ansible_distribution_version:仅显示系统版本

ansible_machine:显示系统类型,例:32位,还是64位

ansible_eth0:仅显示eth0的信息

ansible_hostname:仅显示主机名

ansible_kernel:仅显示内核版本

ansible_lvm:显示lvm相关信息

ansible_memtotal_mb:显示系统总内存

ansible_memfree_mb:显示可用系统内存

ansible_memory_mb:详细显示内存情况

ansible_swaptotal_mb:显示总的swap内存

ansible_swapfree_mb:显示swap内存的可用内存

ansible_mounts:显示系统磁盘挂载情况

ansible_processor:显示cpu个数(具体显示每个cpu的型号)

ansible_processor_vcpus:显示cpu个数(只显示总的个数)

ansible_python_version:显示python版本

 

fetch 从客户端取文件至服务器端

ansible srv -m fetch -a 'src=/root/a.sh dest=/data/scripts'

例: 打包 /var/log 下所有日志文件并远程抓取

ansible all -m shell -a 'tar Jcf log.tar.xz /var/log/*.log'

ansible all -m fetch -a 'src=/root/log.tar.xz dest=/data'

 

常用参数:

- src:远程系统上要获取的文件。 这必须是一个文件,而不是一个目录。 后续版本可能会支持递归提取。

-dest:保存文件的目录。 例如,如果dest目录是/backup,在主机host.example.com上命名为/ etc/profile的src文件将被保存到/backup/host.example.com/etc/profile。

- flat:允许您覆盖将目标文件添加到主机名/ path / to / file的默认行为。

 

apt安装包模块

# 在安装foo软件包前更新然后安装foo - apt: name=foo update_cache=yes

# 移除foo软件包 - apt: name=foo state=absent

# 安装foo软件包 - apt: name=foo state=present

# 安装foo 1.0软件包 - apt: name=foo=1.00 state=present

# 安装nginx最新的名字为squeeze-backport发布包,并且安装前执行更新 - apt: name=nginx state=latest default_release=squeeze-backports update_cache=yes

# 只下载openjdk-6-jdk最新的软件包,不安装 - apt: name=openjdk-6-jdk state=latest install_recommends=no

# 安装所有软件包到最新版本 - apt: upgrade=dist

# 更新apt-get的list - apt: update_cache=yes

# 3600秒后停止update_cache - apt: update_cache=yes cache_valid_time=3600

# 安装远程节点上的/tmp/mypackage.deb软件包 - apt: deb=/tmp/mypackage.deb

参数详解:

- deb: 用于安装远程机器上的.deb后缀的软件包(optional)

- install_recommends:这个参数可以控制远程电脑上是否只是下载软件包,还是下载后安装,默认参数为true,设置为false的时候只下载软件包,不安装

- update_cache: 当这个参数为yes的时候等于apt-get update(optional)

- name: apt要下载的软件包名字,支持name=git=1.6 这种制定版本的模式

- state:状态(present,absent,latest),表示是安装还卸载
   present:默认的,表示为安装
   lastest: 安装为最新的版本
   absent:表示删除

 

command模块

command 模块可以帮助我们在远程主机上执行命令,默认模块,可忽略-m选项

ansible srvs -m command -a 'service vsftpd start'

 

注意:

  • 使用 command 模块在远程主机中执行命令时,不会经过远程主机的 shell 处理。
  • 在使用 command 模块时,如果需要执行的命令中含有重定向、管道符等操作时,这些符号也会失效,比如 "<" , ">", "|", ";" 和 "&"这些符号,如果你需要这些功能,可以参考后面介绍的 shell 模块。
  • 如果远程节点是 windows 操作系统,则需要使用 win_command 模块

 

shell模块

ansible srv -m shell -a 'echo magedu |passwd –stdin wang'

shell 模块可以帮助我们在远程主机上执行命令。与 command 模块不同的是,shell 模块在远程主机中执行命令时,会经过远程主机上的 /bin/sh 处理

使用 shell 模块可以在远程服务器上执行命令,它支持管道与重定向等符号

 

script模块

script 模块可以帮助我们在远程主机上执行 ansible 管理主机上的脚本,也就是说,脚本一直存在于 ansible 管理主机本地,不需要手动拷贝到远程主机后再执行。

 

Ansible可以执行命令的模块有三个:

  command

  shell

  raw

应尽量避免使用这三个模块来执行命令,因为其他模块大部分都是幂等性的,可以自动进行更改跟踪。command、shell、raw不具备幂等性。

 

command、shell模块:

  要求受管主机上安装Python。command可以在受管主机上执行shell命令,但是不支持环境变量和操作符(例如 '|', '<', '>', '&'),shell模块调用的/bin/sh指令执行。

 

raw模块:

  不需要受管主机上安装Python,直接使用远程shell运行命令,通常用于无法安装Python的系统(例如网络设备等)。

 

一些简单的playbook:

1.安装apache服务

复制代码
- hosts: ubuntu
   sudo: yes 
   tasks:
    - name: 安装apache 服务
      apt: pkg=apache2 state=installed
    - name: 推送默认的配置
      copy: src=files/awesome-app dest=/etc/apache2/sites-available/awesome-app mode=0640 
    - name: 创建文档根目录
      file: dest=/var/www/awesome-app state=directory
    - name: 移除默认的虚拟主机
      file: dest=/etc/apache2/sites-available/000-default.conf state=absent
      notify:
        - restart apache

   handlers:
    - name: restart apache
      service: name=apache2 state=restarted
复制代码

 

ansible-playbook config.yml -K

2.安装nginx服务

复制代码
- hosts: ubuntu #这个是你选择的主机
#这个是变量
  vars:
    work_user: www-data
    worker_processes: 2
#sudo方式运行
  sudo: yes
  tasks:
#利用apt模块来操作
  - name: ensure nginx is installed
    apt: pkg=nginx state=installed
  - name: write the nginx config file
    template: src=templates/nginx.j2 dest=/etc/nginx/nginx.conf
#触发重启服务器
    notify:
    - restart nginx
  - name: ensure nginx is running
    service: name=nginx state=started
#这里的restart nginx 和上面的触发是配对的。这就是handlers的作用。
  handlers:
    - name: restart nginx
      service: name=nginx state=restarted
复制代码 复制代码
- hosts: ubuntu
  sudo: yes
  vars:
    epic: true
  tasks:
     - name: 如果是ubuntu
       shell: 'touch /tmp/ubuntu.txt'
       when: ansible_os_family == 'Debian'
     - name: 输出
       shell: echo "aaa" > /tmp/aaa.txt
       when: epic
     - name:  安装ntp 在debian上
       apt: name=ntp state=installed
       when: ansible_os_family == 'Debian'
     - name:  安装ntp 在RedHat上
       yum: name=ntp state=installed
       when: ansible_os_family == 'RedHat'

标签:name,样式,state,nginx,host,ansible,ssh,模块
From: https://www.cnblogs.com/nnxl/p/17754607.html

相关文章

  • js_使用js读取link外部样式
    <linkrel="stylesheet"href="https://at.alicdn.com/t/c/font_1826665_p96ije5uc2f.css"crossorigin>varlinkStyle=document.getElementsByTagName("link")[0];varsheet=linkStyle.sheet||linkStyle.styleSheet;letreg=......
  • SAP ABAP 关于SMARTFORMS编辑文本出现WORD样式
    SAPABAP关于SMARTFORMS编辑文本出现WORD样式问题描述:SAPABAP关于SMARTFORMS编辑时文本默认使用WORD在使用smartforms打开编辑文本的时候会出现word样式,这样就会出现无法拖拽字段和系统默认信息情况,导致部分功能无法使用解决方案:通过SE38打开程序RSCPSETEDITOR将SAPscript......
  • Ansible 执行过程分析、异步、效率优化
    直观观察任务执行速度插件callback_whitelist=profile_tasks,profile_roles,timer该插件可以直接统计每个task,每个role,每个play执行的时间,方面观察出哪些任务耗时Ansible执行过程分析下面是2.9的默认执行过程分析(简单分析,具体请vvv):获取用户家目录,此处为/root在家目录下创建临......
  • ansible-安装
    在线安装一般来说直接在线安装即可Ubuntuapt-getinstall-yansiblecentosyuminstall-yepel-releaseyuminstall-yansiblemacOSbrewinstallansiblePIP方式安装选择安装版本如果不知道可以安装哪些版本,可以通过乱写一个版本,然后根据提示选择要安装的版本例......
  • Vue学习笔记(七):绑定css样式
      1绑定class样式¶vue为HTML绑定css中的class样式是通过v-bind实现的。  1.1绑定单个class¶把需要绑定的样式class名赋值给一遍变量,然后通过变量v-bind绑定class属性,绑定后的class并不会覆盖原来的class属性,而是与原来的class进行叠加。如下所示,d......
  • jquery 直接添加<style>样式
    如何使用jQuery直接添加style样式作为一名经验丰富的开发者,我将带你了解如何使用jQuery直接添加style样式。在本文中,我将向你展示一个简单的步骤,并提供每一步所需的代码和注释。让我们开始吧!整体流程下面是整个过程的步骤概述:步骤描述1引入jQuery库2创建一个样式......
  • fildder工具--过滤展示指定的host包
    fildder过滤指定的host选中Filters->第二个下拉框选中showonlethefollowinghosts->输入指定的host地址如:*.baidu.com(如果有多个地址时,每个地址后用;分割)->点击Actions->选择RunFiltersetnow->Ctrl+x清空fildder抓取到的包->重新请求地址(比如设置的百度,在浏览器中访......
  • 样式表
    内部样式表:在head部分使用<style></style>在style中对各标签赋予属性外部样式表:额外创建.css文件引进html文件中link和import区别:前者是html标签,当网页加载时引用的css会被同时加载,并且不会出现浏览器不兼容问题,后者反之行内样式表:将style作为属性写入标签样式表的优先级:!im......
  • css字体样式
     1.font-style设置字体样式属性值:  normal:指定⽂本字体样式为正常的字体  italic:指定⽂本字体样式为斜体。2.文字字体font-family只能引用系统自带的字体样式,如果需要其他别的字体,需要从外部下载调用引用外部字体  网站:https://font.chinaz.com/katongziti.......
  • css中的字体样式
    一.字体的样式font-style:"normal"正常font-style:"italic"斜体 二.字体的粗细font-weight:"bold/bolder";bold是粗体 font-weight:400;400,500为正常500<为粗体>400为细体 三.字体的家庭font-family可以自己外部引入字体 四.行高line-height:200px 使文......