• Blog
  • Ansible community forum
  • Documentation
Ansible Logo
collection-scaleway
collection-scaleway

Use the collection

  • Try it without an account
    • What you need
    • The tour
      • Is my setup sound?
      • What does the fleet look like?
      • Who is out there, and in which group?
      • Write something, then run it again
      • Power the lab down, and bring it back
      • Restart production progressively
    • What the emulator does not prove
    • Switching to a real account
    • What this is not
    • Cleaning up
  • Using the collection
    • What it does
    • Requirements
    • Install
    • Authentication
    • Sixty seconds
      • Query
      • Maintain state
    • Included content
      • Instance (28 modules)
      • Load Balancer (22 modules)
      • Inventory plugins
      • What the action module refuses
    • Dynamic inventory
    • Shipped playbooks
    • Execution environment
    • Compatibility
    • Versioning
    • Where these modules come from
    • Reporting a defect
    • License
  • Task playbooks
    • Start here
    • Recipes
      • “My Scaleway setup does not work”
      • “I need to see the state of my fleet”
      • “I want to know what is wrong with my fleet, every morning”
      • “I need to power the lab down tonight”
      • “I need to restart production progressively”
      • “I need to look at one machine, or list a zone”
    • Running them
    • What they do not show yet
  • Scheduling these runs
    • What all three need
    • Scheduled CI
    • ansible-navigator
    • AWX
    • When something else decides when
    • What none of these make safe
  • The Scaleway dynamic inventory
    • The configuration file
    • Credentials
    • Products
    • Zones and regions
    • Machine names
    • Where Ansible reaches the machine
    • Groups
    • Filtering
    • Cache
    • Strict mode, and a trap that is not ours
    • The variables set on each machine
    • Chaining onto the collection’s modules
    • Diagnosing
    • How many API calls
    • What this plugin does not do yet

Reference

  • Module reference
    • Instance API
      • dashboard
      • image
      • ip
      • placement group
      • placement group server
      • security group
      • security group rule
      • server
      • server compatible type
      • server private nic
      • server type
      • server type availability
      • server user data
      • snapshot
      • volume
      • volume type
    • Load Balancer API
      • acl
      • backend
      • backend stat
      • certificate
      • frontend
      • frontend acl
      • ip
      • load balancer
      • load balancer private network
      • load balancer stat
      • load balancer type
      • route
      • subscriber
  • Stephrobert.Scaleway
    • Description
    • Plugin Index
      • Modules
      • Filter Plugins
      • Inventory Plugins
      • Lookup Plugins
    • Role Index
      • stephrobert.scaleway.fleet_audit role – Judge a Scaleway fleet against a policy
      • stephrobert.scaleway.fleet_report role – Report on a Scaleway fleet, without touching it
      • stephrobert.scaleway.power_schedule role – Bring a named inventory group to a power state
      • stephrobert.scaleway.rolling_reboot role – Reboot a named inventory group in batches

Understand the project

  • Generator architecture
    • The pipeline
    • The structural decisions
      • 1. The contract is versioned, not fetched on the fly
      • 2. The IR is immutable and serialises deterministically
      • 3. The operation key is stable
      • 4. The resource is derived from the path, not from the operation name
      • 5. Classification is mechanical, exceptions are written down
      • 6. What the overrides settle on Instance
      • 7. Coverage is not computed on a chosen denominator
      • 8. What the generator does not understand stays visible
    • How a module is built
      • What is not decided in a template
      • Two golden files, two different measurements
    • What this project does not do
  • The collection runtime
    • Clearing a field
    • How the roles are split
    • Decision 1: execute the contract’s method and path, over our own transport
    • Decision 2: a single way to build the client
    • Decision 3: validation depends on the target
    • Decision 4: pagination goes all the way, and knows when to stop
    • Decision 5: an error says what to diagnose, and nothing else
    • Decision 6: a PUT receives everything you want to keep
    • The three kinds of module, and what each one does
    • What this runtime still does not carry
    • The end-to-end proof
      • What the scenario asks the emulator rather than writing it down
      • Two backends for the same scenario
      • In CI
      • What the emulator serves of our roadmap
      • What the emulator does not serve, and how it says so
    • The trap hit while writing all this
    • The inventory engine, layer by layer
  • The Scaleway contracts: the source, its limits, how it is watched
    • The source
    • What the document carries
    • What the document does not carry
      • total_count is absent from list responses
      • Arrays in a request body do not declare their elements
      • No body field is declared required
      • The protobuf wrappers show through
      • There is neither a waiter nor an idempotency rule
      • ListPrivateNICs does not list every NIC, and the contract says so
    • Two roles that are never confused
    • Risks and watching
    • Reproducing the measurements
  • Mesure
    • Couverture Day-2 : instance v1
      • Classification
      • Couverture
      • Modules cibles
      • Opérations
      • Limites relevées à la lecture du contrat
    • Génération : instance v1
      • Deux couvertures, et elles ne disent pas la même chose
      • Ce qui est écrit
      • Ce qui est écarté, et pourquoi
      • Comment les modules de gestion comparent
      • Ce que le contrat ne dit pas
    • Couverture Day-2 : lb v1
      • Classification
      • Couverture
      • Modules cibles
      • Opérations
      • Limites relevées à la lecture du contrat
    • Génération : lb v1
      • Deux couvertures, et elles ne disent pas la même chose
      • Ce qui est écrit
      • Comment les modules de gestion comparent
      • Ce que le contrat ne dit pas

Decisions

  • Architecture decision records
    • Why this directory exists
    • The records
  • ADR-001. No operation is UNKNOWN in silence
    • Context
    • Decision
    • Consequences
    • What this record does not decide
  • ADR-002. Day-2 only: Terraform provisions, Ansible operates
    • Context
    • Decision
    • Consequences
    • What this record does not decide
  • ADR-003. A managing module reads before it writes
    • Context
    • Decision
    • Consequences
    • What this record does not decide
  • ADR-004. An ansible-test sanity that examined nothing is a failure
    • Context
    • Decision
    • Consequences
    • What this record does not decide
  • ADR-005. Generated documentation is refused, not reported
    • Context
    • Decision
    • Consequences
    • What this record does not decide
  • ADR-006. The emulator is a proof, not the proof of the real cloud
    • Context
    • Decision
    • Consequences
    • What this record does not decide
  • ADR-007. A measured number is derived, never typed
    • Context
    • Decision
    • Consequences
    • What this record does not decide
  • ADR-008. A constraint is translated or named, never guessed and never silent
    • Context
    • Decision
    • Consequences
    • What this record does not decide
  • ADR-009. How a managed field is compared, and who decides
    • Context
    • Decision
    • Consequences
    • What this record does not decide
  • ADR-010. A write is checked, not announced
    • Context
    • Decision
    • Consequences
    • What this record does not decide
  • ADR-011. A product is admitted, not merely added
    • Context
    • Decision
    • Consequences
    • What this record does not decide
  • ADR-012. An explicit null is refused, never ignored
    • Context
    • Decision
    • Consequences
    • What this record does not decide
  • ADR-013. When a module appeared is recorded, never computed
    • Context
    • Decision
    • Consequences
    • What this record does not decide
  • ADR-014. The runtime owns its HTTP transport
    • Context
    • Decision
    • Consequences
    • What this record does not decide
  • ADR-015. A claim about the real API is a recorded exchange, not a green assertion
    • Context
    • Decision
    • Consequences
    • What this record does not decide
  • ADR-016. A clearable field is cleared with the empty value of its type, and an explicit null is refused
    • Context
    • Decision
    • Consequences
    • What this record does not decide
  • ADR-017. The launcher removes what blocks its own destruction, once, and says so
    • Context
    • Decision
    • Consequences
    • What this record does not decide
  • ADR-018. A retry policy belongs to the operation, and an action is never replayed
    • Context
    • Decision
    • Consequences
    • What this record does not decide
  • ADR-019. An API name filter narrows a listing, it never selects a resource
    • Context
    • Decision
    • Consequences
    • What this record does not decide
  • ADR-020. A plan describes the moment it was computed, and is never replayed
    • Context
    • Decision
    • Consequences
    • What this record does not decide

Generator internals

  • Le générateur
    • generator.source
    • generator.parser
    • generator.ir
    • generator.classifier
    • generator.overrides
    • generator.ansible
    • generator.renderer
    • generator.report

Project quality

  • What OpenSSF Scorecard says, and what it does not
    • The measured state
      • Landed since this scan, and deliberately not written into the table above
      • Signed-Releases: what is signed, and how to check it
      • Fuzzing: what would move it, and what does not
      • Packaging: it read -1, which is “not detected”, not “badly done”
      • Maintained: 0 on a repository committed to daily
    • The checks no configuration fixes
      • Branch-Protection: the bypass, and what it really allows
      • Code-Review: it measures the number of reviewers
      • Maintained and Contributors: time and headcount
      • CII-Best-Practices: a badge, not a practice
    • What is still missing, and is not a Scorecard check
  • OpenSSF Best Practices badge: every answer, ready to paste
    • Before you start
    • Basics
      • Basic project website content
      • FLOSS license
      • Documentation
      • Other
    • Change Control
      • Public version-controlled source repository
      • Unique version numbering
      • Release notes
    • Reporting
      • Bug-reporting process
      • Vulnerability report process
    • Quality
      • Working build system
      • Automated test suite
      • New functionality testing
      • Warning flags
    • Security
      • Secure development knowledge
      • Use basic good cryptographic practices
      • Secured delivery against man-in-the-middle attacks
      • Publicly known vulnerabilities fixed
      • Other security issues
    • Analysis
      • Static code analysis
      • Dynamic code analysis
    • After you submit

Collection index

  • Collection Index
    • Collections in the Stephrobert Namespace
      • Stephrobert.Scaleway
collection-scaleway
  • Index

Index

A | E | G | M | S

A

  • ANSIBLE_CACHE_PLUGIN
  • ANSIBLE_CACHE_PLUGIN_CONNECTION
  • ANSIBLE_CACHE_PLUGIN_PREFIX
  • ANSIBLE_CACHE_PLUGIN_TIMEOUT
  • ANSIBLE_INVENTORY_CACHE
  • ANSIBLE_INVENTORY_CACHE_CONNECTION
  • ANSIBLE_INVENTORY_CACHE_PLUGIN
  • ANSIBLE_INVENTORY_CACHE_PLUGIN_PREFIX
  • ANSIBLE_INVENTORY_CACHE_TIMEOUT
  • ANSIBLE_INVENTORY_USE_EXTRA_VARS

E

  • environment variable
    • ANSIBLE_CACHE_PLUGIN
    • ANSIBLE_CACHE_PLUGIN_CONNECTION
    • ANSIBLE_CACHE_PLUGIN_PREFIX
    • ANSIBLE_CACHE_PLUGIN_TIMEOUT
    • ANSIBLE_INVENTORY_CACHE, [1]
    • ANSIBLE_INVENTORY_CACHE_CONNECTION, [1]
    • ANSIBLE_INVENTORY_CACHE_PLUGIN, [1]
    • ANSIBLE_INVENTORY_CACHE_PLUGIN_PREFIX, [1]
    • ANSIBLE_INVENTORY_CACHE_TIMEOUT, [1]
    • ANSIBLE_INVENTORY_USE_EXTRA_VARS, [1]
    • SCW_ACCESS_KEY, [1], [2]
    • SCW_API_URL, [1], [2]
    • SCW_CONFIG_PATH, [1], [2]
    • SCW_DEFAULT_ORGANIZATION_ID, [1], [2]
    • SCW_DEFAULT_PROJECT_ID, [1], [2]
    • SCW_PROFILE, [1], [2]
    • SCW_SECRET_KEY, [1], [2]

G

  • generator.ansible
    • module
  • generator.classifier
    • module
  • generator.ir
    • module
  • generator.overrides
    • module
  • generator.parser
    • module
  • generator.renderer
    • module
  • generator.report
    • module
  • generator.source
    • module

M

  • module
    • generator.ansible
    • generator.classifier
    • generator.ir
    • generator.overrides
    • generator.parser
    • generator.renderer
    • generator.report
    • generator.source

S

  • SCW_ACCESS_KEY, [1]
  • SCW_API_URL, [1]
  • SCW_CONFIG_PATH, [1]
  • SCW_DEFAULT_ORGANIZATION_ID, [1]
  • SCW_DEFAULT_PROJECT_ID, [1]
  • SCW_PROFILE, [1]
  • SCW_SECRET_KEY, [1]

© Copyright 2026, Stéphane Robert. Last updated on 12/09/2026.

Built with Sphinx using a Sphinx Ansible Theme that is based on the Read the Docs theme and is maintained by the Ansible Community.