# Cloudflare API Token for Ansible (`certbot_dns_api_token`)

This document explains how to generate and use a Cloudflare API Token for DNS automation and certificate operations in Ansible (e.g., with Certbot).

## Purpose

The `certbot_dns_api_token` variable must contain a valid Cloudflare API Token.  
This token is used for all DNS operations and ACME (SSL/TLS certificate) challenges that require access to your Cloudflare-managed domains.

**Never commit your API token to a public repository. Always keep it secure!**

---

## How to Create a Cloudflare API Token

### 1. Log In to Cloudflare

- Go to: [https://dash.cloudflare.com/](https://dash.cloudflare.com/) and log in.

### 2. Open the API Tokens Page

- Click your profile icon (top right) → **My Profile**
- In the sidebar, choose **API Tokens**  
  Or use this direct link: [https://dash.cloudflare.com/profile/api-tokens](https://dash.cloudflare.com/profile/api-tokens)

### 3. Click **Create Token**

### 4. Select **Custom Token**

- Give your token a descriptive name (e.g., `Ansible Certbot Automation`).

### 5. Set Permissions

Add the following permissions:

| Category | Permission   | Access   |
| -------- | ------------ | -------- |
| Zone     | Zone         | Read     |
| Zone     | DNS          | Edit     |
| Zone     | Cache Purge  | Purge    |

- These permissions are required for DNS record management, CAA/SPF/DKIM handling, cache purging, and certificate provisioning.

### 6. Zone Resources

- **Zone Resources:** Set to `Include → All zones`  
  (Or restrict to specific zones as needed for your environment.)

### 7. Create and Save the Token

- Click **Continue to summary** and then **Create Token**.
- Copy the API Token. **It will only be shown once!**

---

## Using the Token in Ansible

Set the token in your Ansible inventory or secrets file:

```yaml
certbot_dns_api_token: "cf_your_generated_token_here"
