@@ -1412,7 +1412,7 @@ entirely achievable, we will delve deeper into these challenges by exploring the
1412
1412
impact of non-deterministic compilers and the strategies to mitigate these
1413
1413
challenges using different methods.
1414
1414
1415
- == Deterministic Builds And Environments
1415
+ == Deterministic Builds And Environments <ch2-deterministic-builds-and-environments>
1416
1416
1417
1417
In this section, we will explore the concept of deterministic builds, and the
1418
1418
potential sources of non-determinism in software builds.
@@ -1470,9 +1470,9 @@ and at any point in the past or future.
1470
1470
1471
1471
Reproducibility relies on stable, consistent and well-maintained codebases but
1472
1472
also heavily depends on stable, consistent and well-maintained environments as
1473
- seen in (add ref to ch2-environments). In addition, a critical component is
1473
+ seen in # ref ( < ch2-deterministic-builds-and- environments> ). In addition, a critical component is
1474
1474
environment configuration management. Configuration management plays a critical
1475
- role inensuring reproducibility by mitigating the non-deterministic behaviours
1475
+ role in ensuring reproducibility by mitigating the non-deterministic behaviours
1476
1476
introduced by configuration drifts.
1477
1477
1478
1478
# info-box [
@@ -1524,9 +1524,9 @@ if not impossible. Environments may progressively "converge" towards a common
1524
1524
state, but subtle differences can persist, introducing variability. To
1525
1525
illustrate this model, we could think of an arbitrary environment that needs to
1526
1526
be configured in a specific way, reach a particular well known state. For
1527
- example, some specific dependencies has to be installed to run a particular
1527
+ example, some specific dependencies have to be installed to run a particular
1528
1528
service. Tools like Puppet # cite (<puppet> , form : " normal" ), Chef
1529
- # cite (<chef> , form : " normal" ), Terraform # cite (<terraform> ,form : " normal" )
1529
+ # cite (<chef> , form : " normal" ), Terraform # cite (<terraform> , form : " normal" )
1530
1530
and Ansible # cite (<ansible> , form : " normal" ) might help to achieve this goal.
1531
1531
1532
1532
While convergent management offers flexibility in responding to unforeseen
@@ -1570,7 +1570,7 @@ approaches based on the environment's needs.
1570
1570
# info-box [
1571
1571
Immutable environments ((add ref to ch2-environments)) are environments that are designed
1572
1572
to be unchangeable once they are created. They are often used in containers
1573
- # eg [Docker # cite (<docker> ,form :" normal" )], where the ability to quickly create
1573
+ # eg [Docker # cite (<docker> , form : " normal" )], where the ability to quickly create
1574
1574
and destroy environments is essential. Immutable environments enhance
1575
1575
reproducibility and reliability, making them an ideal choice for environments
1576
1576
that require high levels of predictability and stability.
@@ -1623,15 +1623,19 @@ configuration can be applied multiple times without altering the environment
1623
1623
beyond its intended state. This abstraction simplifies understanding and
1624
1624
maintenance by allowing the system to determine the necessary actions to achieve
1625
1625
the desired state. Tools such as Puppet # cite (<puppet> , form : " normal" ),
1626
- Kubernetes # cite (<kubernetes> ,form : " normal" ),
1627
- Terraform # cite (<terraform> ,form : " normal" ) and, under some conditions,
1626
+ Kubernetes # cite (<kubernetes> , form : " normal" ),
1627
+ Terraform # cite (<terraform> , form : " normal" ) and, under some conditions,
1628
1628
Docker # cite (<docker> , form : " normal" ) are used to specify the desired end
1629
1629
state. These tools typically feature their own specific # gls (" DSL" ) to create
1630
1630
high-level descriptions of the expected environment's state, as opposed to
1631
1631
issuing imperative and procedural commands. The declarative approach mitigates
1632
1632
the risk of configuration drift by prioritising idempotence, maintaining
1633
1633
explicit dependency graphs, and ensuring a strong awareness of the current state
1634
- of the environment # cite (<HunterGCP> ,form :" normal" , supplement : [p. 348]).
1634
+ of the environment # cite (<HunterGCP> , form : " normal" , supplement : [p. 348]).
1635
+
1636
+ // This doesn't really convince me, you classify a shell command as
1637
+ // "declarative" when they are in shell scripts, which is not much different
1638
+ // to me as a Dockerfile
1635
1639
1636
1640
# info-box (kind : " note" )[
1637
1641
In @ch2-table-configuration-mgmt , Docker # cite (<docker> , form : " normal" ) and
0 commit comments